2011-11-09 16 views
0

私のroutes.rbファイルには、次のネストされたリソースがあります。内部リソースはコントローラ名を指定します。 BatchesTags#newためのビューでネストされたリソースを持つform_forの行: "経路が一致しません"

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

、私は、フォームを構築しようとしています:

:このページ( /sets/1/tags/new)をロードしようとすると

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

は私に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有効なルート(である、ということが判明し"No route matches"というエラーメッセージが非常に混乱しています)、必要なパスは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の有効なルートではないというエラーメッセージが表示されましたか?

関連する問題