Snažím sa nájsť spôsob, ako vytiahnuť všetky poznámky priradené kurzu, ale iba v prípade potreby. Mám stránku zobrazujúcu všetky poznámky k testu.
course show.html.erb
<%= @course.name %>
<% @quiz.notes.each do |note| %>
<%= link_to note.title, quiz_note_path(@quiz, note) %><br/>
<% end %>
Vyššie uvedený kód funguje, okrem toho, že vyťahuje všetky poznámky a nie poznámky, ktoré sú priradené k tomuto kurzu. Ako môžem povedať koľajniciam, aby vytiahli poznámku iba vtedy, ak sú poznámka a názov kurzu rovnaké?
aktualizovať!
V poznámke new.html.erb používam kolekciu_select
<%= f.collection_select(:course_ids, @quiz.courses, :id, :note_name, options = {:prompt => "Choose"}) %>
odpovede:
2 pre odpoveď č. 1Zdá sa, že medzi nami nie je vzťah course
a quiz
.
A course
má mnoho quizzes
, a quiz
má mnoho notes
. Tie by mali nastaviť váš vzťah týmto spôsobom, takže vyhral "t vytiahnuť zbytočné poznámky, ktoré sa netýkajú aktuálneho course
.
Trik je tu vytiahnuť všetky poznámky vnútri kurz pomocou 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 %>
0 pre odpoveď č. 2
Skúste niečo také.
<%= @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
hodnotí bloku a vráti iba prvky, pre ktoré bola pravda.