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"}

有谁知道如何解决这个错误?

编辑:

在 for 的视图中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 回答