授業を検索するためのwebアプリを作ろうと考えているのですがいいね機能を実装し、いいね順にランキングを作成しようと考えています。そこで質問なのですがいいね順にランキング表示することはできたのですが同じ名前の授業でもidが異なるためランキング表示の中に重複して入ってしまいます。これを防ぐための方法をお聞きしたいです。
distinctを使って表示しようと考えたのですが名前は同じでもidは異なるのでうまくいきませんでした。
lessons_controller.rb
class LessonsController < ApplicationController
def index
@lessons=Lesson.all.order("created_at DESC")
@teachers=Teacher.all.order("created_at DESC")
@all_ranks = Lesson.find(Like.group(:lesson_id).order('count(lesson_id) desc').limit(10).distinct.pluck(:lesson_id))
end
def new
@lesson=Lesson.new
@lesson.build_teacher
end def create @lesson = Lesson.new(lesson_params) @lesson.user_id=current_user.id if @lesson.save flash[:update] = "lesson was successfully created." redirect_to lessons_path else @lessons = Lesson.all render'index' end end def show @lesson = Lesson.find params[:id] @line = Like.new @lessons = Lesson.where(title:@lesson.title) @teachers = Teacher.where(id:@lessons.pluck(:teacher_id)) end private def lesson_params params.require(:lesson).permit(:title, :body, teacher_attributes:[:id,:name]) end
end
index.html.erb
<p>授業一覧</p> <p><%= link_to "授業の評価をコメントする", new_lesson_path%></p> <% @lessons.zip(@teachers) do |lesson,teacher|%> <p><%=lesson.created_at.to_s(:datetime_jp)%></p> <p><%= link_to teacher.name, teacher_path(teacher.id)%></p> <p><%= link_to lesson.title, lesson_path(lesson.id)%></p> <p><%=lesson.body%></p> <p>-----------------------</p><%end%>
<% @all_ranks.each.with_index(1) do |rank, i|%>
回答1件
あなたの回答
tips
プレビュー