1

我知道我刚才有这个搜索功能,但一直在用引导程序重做我的搜索和导航栏,现在看起来不错,但搜索功能不起作用!我认为这是索引操作中的内容?它所做的只是,好吧,什么都没有。也许它没有提交表格?- 我怎样才能检查这个?

视图 *guidelines_controller.rb*

 def index
    @guidelines = Guideline.order(:title).all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @guidelines }
    end
    @search = Sunspot.search(Guideline) do  
    fulltext params[:search]  
  end  
  @guidelines = @search.results 
  end

布局/application.html.erb

<%= form_tag guidelines_path, :class => 'navbar-search', :method => :get do %>  

    <%= text_field_tag :search, params[:search], :class => 'search-query', :placeholder=>"Search" %> 

模型 指南.rb

searchable do
    text :title, :default_boost => 2
    text :subtitle
  end
4

1 回答 1

1

我不是太阳黑子专家,但你的控制器方法有点奇怪。为什么在调用 Sunspot 之前渲染视图?

此外,为什么要获取所有指南行 (Guideline.order(:title).all) ?

如果给定搜索条件 (params[:search]),我已经重构了您的方法,假设您想使用 Sunspot 进行搜索。否则将获取所有行。

def index
  if params[:search].present?
    @search = Sunspot.search(Guideline) do  
      fulltext params[:search]
    end

    @guidelines = @search.results
  else
    @guidelines = Guideline.order(:title).all
  end

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @guidelines }
  end
end

顺便说一句,如果 Guideline 模型包含很多行,您应该考虑限制行数(限制或分页)。

编辑

这是关于 Sunspot #278 Search with Sunspot的截屏视频

也许您忘记重新索引您的搜索引擎?

rake sunspot:reindex
于 2013-02-19T10:05:21.423 回答