繁体   English   中英

在Rails 3中嵌套浅路径的资源

[英]nested resources with shallow routes in rails 3

我已经使用Rails了一段时间,但是我还没有克服使用3级深度嵌套资源的问题。 当我在注释页面上时,我想将课程名称链接到课程和课程,但是rails总是给我一个错误。

我有3个型号的课程,课程和笔记。 一个班级有很多课程,而课程属于一个班级。 课程有很多笔记,而笔记属于一门课程。 我将在下面解释。

class.rb

 has_many :courses

course.rb

belongs_to :class
has_many :schedules
has_many :notes, :through => :schedules

note.rb

has_many :schedules
has_many :courses, :through => :schedules

schedule.rb

belongs_to :course
belongs_to :note

routes.rb

  resources :classes, :shallow => true do
    resources :courses do
      resources :notes
    end
  end

index.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”。 我认为上面的代码是正确的,但是我不确定为什么它不能正常工作。 关于如何使课程链接到像mysite.com/classes/1/course/3这样的URL的任何建议?

我知道这个问题是在不久前被问到的,但是我想既然没有被“ 回答 ”,我就去解决。

几件事。 首先,您在helper方法中遇到的错误是由于没有对class实例的引用导致的。 您只将course对象作为参数传递。 鉴于以上您的关联,这将有效

notes_helper.rb

def note_class(course)
  link_to course.course_name, class_course_path(course.class, course)
end

其次,正如其中一条评论中提到的那样, class是Ruby中的保留关键字,因此最好避免在模型和关联中使用它。 干杯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM