我已经通过通讯地址(路由)实现了搜索:(/:category_id/:id
我只希望我的控制器操作代码中不是 id,而是“名称”)
例如
/category_name/search_pattern_for_item_name
,将在具有“category_name”名称的类别中查找名称类似于“search_pattern_for_item_name”的项目。
现在我想制作一个表单并将它与这条路线绑定,即在提交时我想被重定向到上面提到的路线......
我只知道如何写这个:
<%= form_tag({ :controller => "items", :action => "show" }, :method => "get") do %>
<%= text_field_tag :id %>
<%= hidden_field_tag :category_id, @category.name %>
<%= submit_tag "Filter" %>
<% end %>
但这会导致No route matches {:controller=>"items"}
错误,除非我将其放入与 ItemsController#show 操作对应的视图中。即使在后一种(成功)情况下,我也会在提交时获得 url(在搜索“it”时),而不是我所期望的:http://localhost:3000/category1/item12?utf8=%E2%9C%93&id=it&category_id=category1&commit=Filter
虽然我期待http://localhost:3000/category1/it
如何为我的案例实施正确的表格或我做错了什么?
我的路线.rb:
resources :categories, path: '', only: [:index] do
resources :items, path: '', only: [:index, :show]
end