Ruby on rails 3 嵌套路由:Rails 3
我要走这条特殊的嵌套路线上班,真是费了好大劲。这很奇怪,因为我已经迁移了许多路由到新的Rails3语法,而这一条似乎不起作用。来吧 我有一个名为“piece”的对象,它有一个嵌套对象,名为“piece\u comment”。下面是routes.rb的外观:Ruby on rails 3 嵌套路由:Rails 3,ruby-on-rails-3,rails-routing,Ruby On Rails 3,Rails Routing,我要走这条特殊的嵌套路线上班,真是费了好大劲。这很奇怪,因为我已经迁移了许多路由到新的Rails3语法,而这一条似乎不起作用。来吧 我有一个名为“piece”的对象,它有一个嵌套对象,名为“piece\u comment”。下面是routes.rb的外观: resources :piece do resources :piece_rating, :as => :rating resources :piece_comments, :as => :comments end 下面
resources :piece do
resources :piece_rating, :as => :rating
resources :piece_comments, :as => :comments
end
下面是piece/show.html.erb的外观,以及提交一条评论的表单:
<% @piece_comment = PieceComment.new(:piece_id => @piece.id, :user_id => current_user.id) %>
<%= form_for [@piece, @piece_comment] do |f| %>
<%= f.hidden_field 'piece_comment', 'user_id' %>
<%= f.hidden_field 'piece_comment', 'piece_id' %>
<%= f.text_area 'piece_comment', 'comment' %>
<%= f.submit_tag 'Post' %>
<% end %>
@piece.id,:user\u id=>current\u user.id)%>
现在,奇怪的是,“form_for”行触发了以下错误:
未定义的方法'piece\u piece\u comments\u path'#
我的路由文件中的:as
是否应该将其发送到工件注释路径,而不是工件注释路径?如果我将其更改为:as=>:foobar
或其他内容,则会得到相同的错误。因此,显然routes文件似乎无法正常工作。(奇怪的是,评级路线的行为似乎很好。)
有没有关于路由可能有什么问题的想法?尽管我不确定这是否是问题所在,但是
routes.rb中的资源应该是复数的。尝试:
resources :pieces do
resources :piece_ratings, :as => :ratings
resources :piece_comments, :as => :comments
end
使用rake routes
查看由routes.rb
生成的路由名称
resources :pieces do
resources :piece_ratings, :as => :ratings
resources :piece_comments, :as => :comments
end