我有一段时间让这个特定的嵌套路线发挥作用。这很奇怪,因为我一直在将许多路由迁移到新的Rails 3语法,特别是这个似乎不起作用。到此为止。
我有一个名为“piece”的对象,它有一个名为“piece_comment”的嵌套对象。这是routes.rb的样子:
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 %>
现在,奇怪的是我得到了“form_for”行触发的以下错误:
undefined method `piece_piece_comments_path' for #<#<Class:0x007f80ec732a48>:0x007f80ec737ae8>
我的路由文件中的:as
不应该将其发送到piece_comments_path,而不是piece_piece_comments_path吗?如果我将其更改为:as => :foobar
或其他什么,我会得到同样的错误。很明显,路由文件似乎无法正常工作。 (奇怪的是,评级路线的行为似乎很好。)
关于路由可能出错的任何想法?
答案 0 :(得分:1)
Altough我不确定是不是问题,routes.rb
中的资源应该是复数。试试:
resources :pieces do
resources :piece_ratings, :as => :ratings
resources :piece_comments, :as => :comments
end
使用rake routes
查看routes.rb
生成的路由的名称。