/ / Získanie konkrétnych položiek z iterujúcich koľajníc 3 - rubínovo-na-koľajnice, rubín, rubín-na-koľajnice-3

Získanie konkrétnych položiek z iterujúcich koľajníc 3 - rubínovo-na-koľajniciach, rubínu, rubíne na koľajniciach-3

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ď č. 1

Zdá 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.