我已经通过通讯网址(路线)实施了搜索:/:category_id/:id
(我只希望不是ID,而是我的控制器动作代码中的“名称”)
E.g。
/category_name/search_pattern_for_item_name
将使用“category_name”名称在catagory中查找名称类似于“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 action相对应的视图中。即使在后一个(成功的)案例中,我也会在提交时(在搜索“它”时)得到的URL不是我所期望的:http://localhost:3000/category1/item12?utf8=%E2%9C%93&id=it&category_id=category1&commit=Filter
虽然我期待http://localhost:3000/category1/it
如何为我的案例实施正确的表格或我做错了什么?
my routes.rb:
resources :categories, path: '', only: [:index] do
resources :items, path: '', only: [:index, :show]
end
答案 0 :(得分:0)
<%= form_tag({ :controller => "items", :action => "show",
:id =>params[:id], :category_id =>params[:category_id] },
:method => "get") do %>