搜索栏无法在某些页面上使用Sunspot Solr

时间:2015-04-01 01:22:26

标签: ruby-on-rails ruby-on-rails-3 solr sunspot sunspot-rails

我在标题中添加了一个搜索栏,因此应用程序中的每个页面都有一个。但是,搜索栏仅适用于主页和索引页。当我转到我的联系页面(只是一个例子)时,它不起作用。我已经尝试重定向到我的搜索网址,但似乎没有任何效果。有什么建议吗?

search_controller.rb(controller)

class SearchController < ApplicationController

 def index
   @search = Sunspot.search [Dairy, Drink] do
   fulltext params[:search]
 end

 if @search.results.any?
   @results = @search.results
  else
   return redirect_to request_path
  end
 end 

end

search.rb(model)

class Search < ActiveRecord::Base

attr_accessible :title

searchable do
  autosuggest :search_title, :using => :title   
 end
end

_searchbarheader.html.erb(搜索栏视图)

<%= form_tag search_index_path, :method => :get do %>
  <%= text_field_tag :search, params[:search], style:"width:300px; height:30px;" %>
  <%= submit_tag "Search!", :name => nil, class: "btn btn-default"%>
<% end %>

_header.html.erb(标题视图)

<div class="container-fluid">
    <%= render 'layouts/brand' unless @skip_brand %> 
  <form class="navbar-form navbar-left">
    <%= render 'layouts/searchbarheader' unless @skip_header %>
  </form>

  <div id="navbar" class="navbar-collapse collapse">
    <ul class="nav navbar-nav navbar-right">
        <% if user_signed_in? %>
        <li><%= link_to current_user.name%></li>
        <li><a class="glyphicon glyphicon-cog" href="<%=edit_user_registration_path%>"></a></li>
      <li><%= link_to "Logout", destroy_user_session_path, method: :delete %> </li>  
    <%else%>   
        <li><%= link_to "Login", new_user_session_path %></li>
        <li><%= link_to "Sign up", new_user_registration_path %></li>
    </ul>    
    <%end%>
</div>

我的搜索栏呈现在标题中,标题呈现在应用中。 感谢您的任何帮助。还在学习rails和solr如何协同工作。

1 个答案:

答案 0 :(得分:1)

删除包含搜索栏的_header.html.erb中的表单标记。 _searchbarheader.html.erb中的form_tag帮助器也将呈现表单标记。因此,正如您现在所拥有的那样,您的HTML输出将具有嵌套表单。我不确定这是什么问题,但它是不正确的HTML,因此可能会导致问题,具体取决于页面上的其他内容,例如其他表单。