0

我在我的应用程序中使用太阳黑子。在我的应用程序中,人们可以在他的帐户中上传声音,我使用 sunspot 来研究声音的名称。但我的搜索发现了所有声音,而不仅仅是用户的声音。

在我的控制器中,我写道:

if params[:search].present?
    @search = Sunspot.search(Sound) do
      fulltext params[:search]


    end

    @sounds = @search.results
  else
    @sounds = Sound.order(:title).all
  end

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

但这列出了我所有的声音,而不仅仅是用户的声音。

我希望我的要求很清楚。

感谢帮助。

4

1 回答 1

1

在太阳黑子中,我们有 :with 参数,我们可以通过你自己的过滤器,比如

Sounds.search do
  fulltext 'your text'
  with :user_id, 1
end

或者

if params[:search].present?
  @search = Sunspot.search(Sound) do
  fulltext params[:search]
end
  @sounds = @search.results
else
  @sounds = Sound.order(:title).all
end
respond_to do |format|
  format.html # index.html.erb
format.json { render json: @sounds }
end

无论如何@sounds 具有所有值,因此您可以通过_user 编写一个范围,并且可以轻松过滤它。

喜欢@sounds.by_user(@user.id)

更多信息请参考RailcastGithubsunspot.github.io

于 2013-10-14T13:23:42.093 回答