2

Bootstrap の Navbar Search コンポーネントを使用して、navbar に簡単なキーワード検索を入れようとしています。現在、これは次のように form_tag を使用しています

<form class="navbar-search pull-left">
  <%= form_tag(recipes_path, :method => :get) do %>
    <%= text_field_tag :keywords, nil, 
      {:class => "search-query", :placeholder => "recipes quick search"} %>
    <%= hidden_field_tag :use_keywords, "true" %>
    <%= hidden_field_tag :wide_search, "true" %>
  <% end %>
</form>

レシピ検索用です。フォームを使用してキーワードを取得 (試行) しています。キーワードはパラメーターとして検索に渡され、レシピ インデックス アクションに存在します。

def index
  if params[:wide_search].present?
    @search = Search.new
    @search.use_keywords = params[:use_keywords]
    @search.keywords = params[:keywords]
    ... (more params for other search types)
    if params[:wide_search] == "true"
      @recipes = @search.wide_search
    elsif params[:wide_search] == "false"
      @recipes = @search.narrow_search
    end
    @recipes = @recipes.paginate(:page => params[:page])
  else # no params, just index all
    @recipes = Recipe.paginate(:page => params[:page])
  end
end

「検索」はルビクラスであることに注意してください。古い検索を作成して表示できるように、それを本格的なリソースにすることを考えていました (過去の履歴に基づいて提案された検索を提供するためにそれらを調べることができるかもしれません) が、それをやめることにしました。それが良いアイデアだったかどうかはまだわかりません。それが実際のリソースである場合は、RESTful アクションを使用して問題を解決できる可能性があります。これは私の実際の問題ではありませんが、これに関する提案はありますか?

申し訳ありませんが、実際の問題に戻ります -- ルート ページまたはどこからでも、キーワードを入力し、(検索バー内で) エンター キーを押して、必要なパラメーターを含むレシピ インデックスにリダイレクトできるようにしたいと考えています。検索を実行して結果を表示できます。

現在、インデックス ページに移動してこれを行うと、問題なく動作します。しかし、他のページ (ルート ページなど) でキーワードを入力して Enter キーを押すと、現在のページがリロードされますが、URL にパラメーターが表示されます。そのため、レシピ インデックスにリダイレクトされません。私は何かが欠けているに違いありませんが、何がわかりません。実際の送信ボタンがないため、form_tag を疑っています。しかし、インデックスページにいるときに機能するので、わかりません。どんな提案でも大歓迎です!

4

0 に答える 0