我的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 =&gt;“show”,:controller =&gt;“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 :(得分:0)
事实证明,虽然batch_tag_path
是有效路由(使“无路由匹配”错误消息非常混乱),但我需要的路径是复数{{1} },如此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"}
不是POST的有效路径?