2012-02-06 124 views
0

我有一個時間讓這個特殊的嵌套的上班路線是魔鬼。這很奇怪,因爲我一直在將許多路線遷移到新的Rails 3語法,特別是這一個似乎不起作用。開始。破碎嵌套路線:Rails 3中

我有所謂的「片」,它有一個名爲「piece_comment」嵌套對象的對象。這裏的routes.rb中是什麼樣子:

resources :piece do 
    resources :piece_rating, :as => :rating 
    resources :piece_comments, :as => :comments 
end 

這裏是哪塊/ 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什麼的,我得到了同樣的錯誤。所以很明顯的路徑文件似乎沒有將一切正常。 (奇怪的是,等級路由規則的行爲似乎罰款。)

什麼可能是錯誤的路由任何想法?

回答

1

Altough我不知道這是一個問題,資源應在routes.rb複數。試着用:

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

使用rake routes看到由routes.rb生成的路由的名稱。