0

コースに割り当てられているすべてのメモを、必要な場合にのみプルする方法を見つけようとしています。クイズのすべてのメモを表示するショーページがあります。

コースshow.html.erb

<%= @course.name %>
<% @quiz.notes.each do |note| %>
    <%= link_to note.title, quiz_note_path(@quiz, note)  %><br/>
<% end %>

上記のコードは、そのコースに割り当てられているノートではなく、すべてのノートをプルすることを除いて、検索で機能します。ノートとコース名が等しい場合にのみノートを引くようにレールに指示するにはどうすればよいですか?

アップデート!

メモnew.html.erbで、collection_selectを使用しています

  <%= f.collection_select(:course_ids, @quiz.courses, :id, :note_name, options = {:prompt => "Choose"}) %>
4

2 に答える 2

2

courseとの関係がないようですquiz

Acourseにはたくさんquizzesあり、aquizにはたくさんありnotesます。現在のに関係のない不要なメモが引き出されないように、このように関係を設定する必要がありますcourse

ここでの秘訣は、を使用してコース内のすべてのメモをプルすることhas_many :throughです。

class Course < ActiveRecord::Base
  has_many :quizzes
  has_many :notes, :through => quizzes
end

class Quiz < ActiveRecord::Base
  has_many :notes
end

class Note < ActiveRecord::Base
  belongs_to :quiz
end

<%= @course.name %>
<% @course.notes.each do |note| %>
    <%= link_to note.title, quiz_note_path(note.quiz, note)  %><br/>
<% end %>
于 2012-05-30T18:18:41.533 に答える
0

このようなことを試してください。

<%= @course.name %>
<% @quiz.notes.select { |n| n.title == @course.name }.each do |note| %>
  <%= link_to note.title, quiz_note_path(@quiz, note)  %><br/>
<% end %>

Enumerable.selectブロックを評価し、それが真であった要素のみを返します。

于 2012-05-30T18:16:56.173 に答える