我使用rails已经有一段时间了,但是我还没有克服使用3层深度嵌套资源的问题。当我在备注页上时,我想将课程名称链接到类和课程,但是rails总是给我一个错误。
我有三个模特儿课,课程和笔记。一个班有许多课程,课程属于一个班级。课程有很多笔记,笔记属于一门课程。我将在下面解释。
class.rb
has_many :coursescourse.rb
belongs_to :class
has_many :schedules
has_many :notes, :through => :schedulesnote.rb
has_many :schedules
has_many :courses, :through => :schedulesschedule.rb
belongs_to :course
belongs_to :noteroutes.rb
resources :classes, :shallow => true do
resources :courses do
resources :notes
end
endindex.html.erb
<% @notes.each do |note| %>
<% note.courses.each do |course| %>
<%= note_class(course) %>
<% end %>
<% end %>notes_helper.rb
def note_class(course)
link_to course.course_name, class_course_path(class, course)
end浅层路由非常有效,除非rails给我一个错误“未定义的局部变量或方法”“`class”for。我认为上面的代码是正确的,但我不知道为什么它不能正常工作。对于如何让课程链接到url,如mysite.com/classes/1/ course /3,有什么建议吗?
发布于 2012-08-28 22:43:18
我意识到这个问题是在一段时间前提出的,但我想既然它还没有被“回答”,我就试一试。
几件事。首先,helper方法中出现的错误是没有引用class实例的结果。您只将course对象作为参数传递。考虑到您的上述协会,这将有效。
notes_helper.rb
def note_class(course)
link_to course.course_name, class_course_path(course.class, course)
end第二,正如其中一个注释中提到的那样,class是Ruby中的一个保留关键字,因此最好避免将它用于您的模型和关联。干杯。
https://stackoverflow.com/questions/10805614
复制相似问题