0

ファイルに次のネストされたリソースがありroutes.rbます。内部リソースはコントローラー名を指定します。

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) %>
4

1 に答える 1

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 の有効なルートではないことを意味していたのでしょうか?

于 2011-11-09T16:54:27.393 に答える