0

対応する URL (ルート) を介して検索を実装しました: /: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を取得します。http://localhost:3000/category1/item12?utf8=%E2%9C%93&id=it&category_id=category1&commit=Filter

期待したけどhttp://localhost:3000/category1/it

私の場合に正しいフォームを実装する方法、または何が間違っていましたか?

私のroutes.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 に答える