/ / रेलिंग पुनरावृत्तियों से विशिष्ट वस्तुओं को प्राप्त करना 3 - रूबी-ऑन-रेल, रूबी, रूबी-ऑन-रेल -3

फिर से चलने वाली रेलों से विशिष्ट वस्तुओं को प्राप्त करना 3 - रूबी-ऑन-रेल, रूबी, रूबी-ऑन-रेल -3

मैं पाठ्यक्रम के लिए आवंटित सभी नोटों को खींचने का एक तरीका खोजने का प्रयास कर रहा हूं लेकिन केवल तभी जरूरी है। मेरे पास एक शो पेज है जो प्रश्नोत्तरी के लिए सभी नोट्स दिखाता है।

पाठ्यक्रम 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"}) %>

उत्तर:

जवाब के लिए 2 № 1

ऐसा लगता है कि आपके बीच संबंध नहीं है course तथा quiz.

course बहुत सारे quizzes, ए quiz बहुत सारे 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 %>

जवाब के लिए 0 № 2

इस तरह कुछ कोशिश करो।

<%= @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 ब्लॉक का मूल्यांकन करता है और केवल उन तत्वों को लौटाता है जिनके लिए यह सत्य था।