0

Railsプロジェクトの検索にsunpostgemを使用しています。

アプリに2つの言語があります。

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」で取得した現在の言語を取得します

私の質問は次のとおりです。自分のWebサイトでユーザーが現在使用している言語の結果のみを表示するにはどうすればよいですか?

どうもありがとうございます!

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 に答える