首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails 3中带有浅路由的嵌套资源

rails 3中带有浅路由的嵌套资源
EN

Stack Overflow用户
提问于 2012-05-29 19:43:00
回答 1查看 506关注 0票数 0

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

我有三个模特儿课,课程和笔记。一个班有许多课程,课程属于一个班级。课程有很多笔记,笔记属于一门课程。我将在下面解释。

class.rb

代码语言:javascript
复制
 has_many :courses

course.rb

代码语言:javascript
复制
belongs_to :class
has_many :schedules
has_many :notes, :through => :schedules

note.rb

代码语言:javascript
复制
has_many :schedules
has_many :courses, :through => :schedules

schedule.rb

代码语言:javascript
复制
belongs_to :course
belongs_to :note

routes.rb

代码语言:javascript
复制
  resources :classes, :shallow => true do
    resources :courses do
      resources :notes
    end
  end

index.html.erb

代码语言:javascript
复制
<% @notes.each do |note| %>
  <% note.courses.each do |course| %>
    <%= note_class(course) %>
  <% end %>
<% end %>

notes_helper.rb

代码语言:javascript
复制
  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,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-08-28 22:43:18

我意识到这个问题是在一段时间前提出的,但我想既然它还没有被“回答”,我就试一试。

几件事。首先,helper方法中出现的错误是没有引用class实例的结果。您只将course对象作为参数传递。考虑到您的上述协会,这将有效。

notes_helper.rb

代码语言:javascript
复制
def note_class(course)
  link_to course.course_name, class_course_path(course.class, course)
end

第二,正如其中一个注释中提到的那样,class是Ruby中的一个保留关键字,因此最好避免将它用于您的模型和关联。干杯。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10805614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档