0

我已经通过通讯地址(路由)实现了搜索:(/: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
4

1 回答 1

0
<%= form_tag({ :controller => "items", :action => "show", 
        :id =>params[:id], :category_id =>params[:category_id] }, 
        :method => "get") do %>
于 2012-09-27T06:54:16.717 回答