【问题标题】:Nested Routes Broken: Rails 3嵌套路由损坏:Rails 3
【发布时间】:2012-02-06 15:39:49
【问题描述】:

让这条特殊的嵌套路由正常工作,我正忙得不可开交。这很奇怪,因为我一直在将许多路由迁移到新的 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_cmets_path,而不是piece_piece_cmets_path?如果我将其更改为:as =&gt; :foobar 或其他内容,我会得到同样的错误。很明显,路由文件似乎无法正常工作。 (奇怪的是,评级路线的行为似乎很好。)

关于路由可能有什么问题的任何想法?

【问题讨论】:

    标签: ruby-on-rails-3 rails-routing


    【解决方案1】:

    虽然我不确定是不是问题所在,但 routes.rb 中的资源应该是复数形式。尝试:

    resources :pieces do
      resources :piece_ratings, :as => :ratings
      resources :piece_comments, :as => :comments
    end
    

    使用rake routes查看routes.rb生成的路由名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多