2011-11-09 142 views
0

我在我的routes.rb文件中有以下嵌套資源。內部資源指定一個控制器名稱。Rails form_for嵌套資源:「沒有路由匹配」

resources :batches, :except => [:new], :path => "sets" do 
    resources :tags, :controller => "batches_tags" 
end 

在爲BatchesTags#new的觀點,我想建立一個形式:

<%= form_for [@batch, @tag], :url => batch_tag_path do |f| %> 
    ... 
<% end %> 

試圖加載這個頁面(/sets/1/tags/new)給了我一個的ActionController :: RoutingError與消息:

沒有路線匹配{:action =>「show」,:controller =>「batches_tags」}

但是當我運行$ rake routes,它清楚地表明這條航線不存在

batch_tag GET /sets/:batch_id/tags/:id(.:format)  {:action=>"show", :controller=>"batches_tags"} 

有誰知道如何解決這個問題?

編輯:

在爲Batches#show的觀點,我使用的是相同的batch_tag_path功能,它完美的作品:

<%= link_to "...", batch_tag_path(@batch, tag) %> 
+0

你說你正試圖加載/新的動作,但路由器扔回顯示錯誤...我很困惑。 rake_routes對批次和標籤的完整輸出是多少? –

回答

0

事實證明,雖然batch_tag_path一個有效途徑(使「無路線匹配」錯誤消息非常混亂),我需要的路徑是複數batch_tags_path,如在此$ rake routes輸出中所示:

batch_tags GET /sets/:batch_id/tags(.:format) {:action=>"index", :controller=>"batches_tags"} 
      POST /sets/:batch_id/tags(.:format) {:action=>"create", :controller=>"batches_tags"} 

也許錯誤消息意味着batch_tag_path不是POST的有效路由?