0

我正在使用sunpost gem在我的 rails 项目中进行搜索。

我的应用程序现在有两种语言:

I18n.default_locale = :en
LANGUAGES = [
['English',
'en'],
["Español".html_safe, 'es']
]

我的post.rb模型中有一个语言属性,其中包含西班牙语的值“es”或英语的值“en”

我在索引操作中的posts_controller中有下一个方法:

def index
   @search = Post.solr_search do |s|
     s.fulltext params[:search]
     s.keywords params[:search]
     s.order_by :created_at, :desc
     s.paginate :page => params[:page], :per_page => 20
   end

   @posts = @search.results

    respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @posts }
    format.js
  end 
 end

I18n.locale.to_s我使用此代码“es”“en”获得当前语言

我的问题是:我怎样才能只显示我网站中用户当前使用的语言的结果?

非常感谢!

4

1 回答 1

1

如果您可以在帖子模型中发布可搜索块,那将非常有帮助。但在那之前,我会试一试。

您的 Post 模型应如下所示:

class Post < ActiveRecord::Base
  searchable do
    ...
    string :language
    ...
  end
end

您在哪里为帖子编写/存储的语言编制索引。

然后你的控制器使用语言字段作为过滤器。它应该看起来像:

def index
  @search = Post.search do |s|
    s.keywords params[:search]
    s.with(:language, I18n.locale.to_s) if I18n.locale.present?
    s.order_by :created_at, :desc
    s.paginate :page => params[:page], :per_page => 20
  end

  @posts = @search.results

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @posts }
    format.js
  end 
end

你有它!

于 2012-07-04T01:19:49.297 回答