2

我正在尝试使用 Bootstrap 的导航栏搜索组件在导航栏中进行快速关键字搜索。目前这是使用 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

请注意,“搜索”是一个 ruby​​ 类。我想把它变成一个成熟的资源,这样我就可以创建和查看旧的搜索(也许可以查看它们以根据过去的历史等提供建议的搜索),但决定不这样做。我仍然不知道这是否是个好主意。如果它是一个实际的资源,它可能具有 RESTful 操作并且可能会节省一些问题。这不是我的实际问题,但有人对此有建议吗?

抱歉,回到实际问题——从根页面或任何地方,我希望能够输入关键字,按回车键(在搜索栏中)并使用所需参数将其重定向到配方索引它可以运行搜索并显示结果。

现在,如果我转到索引页面并执行此操作,它就可以正常工作。但是,如果我在任何其他页面(如根页面或其他任何地方)并尝试键入关键字并按 Enter,它只会重新加载当前页面,尽管我确实在 URL 中看到了参数。所以它不会重定向到配方索引。我一定错过了什么,但我不确定是什么。我对 form_tag 有点怀疑,因为没有实际的提交按钮。但是当我在索引页面时它会起作用,所以我不知道。任何建议表示赞赏!

4

0 回答 0