0

我正在尝试找到一种方法来提取分配给课程的所有笔记,但仅在必要时。我有一个显示页面,其中显示了测验的所有笔记。

课程 show.html.erb

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

上面的代码可以找到,除了它提取所有笔记而不是分配给该课程的笔记。如果笔记和课程名称相同,我如何告诉 Rails 只拉笔记?

更新!

在注释 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 回答