使用带有form_tag的Bootstrap Navbar Search可以使用搜索参数重定向到资源索引

时间:2013-05-06 23:51:43

标签: ruby-on-rails search twitter-bootstrap

我正在尝试使用Bootstrap的Navbar Search组件在我的导航栏中进行快速关键字搜索。目前,这是使用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动作,也许可以节省一些问题。这不是我的实际问题,但有人对此提出了建议吗?

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

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

0 个答案:

没有答案