0

私はレールプロジェクトの検索にsunpost gemを使用しています。i18nフレームワークの太陽黒点3.2

私は今、私のアプリで二つの言語います

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

私は私のpost.rbモデル、「エス」スペイン語または値ため」の値が含まれている言語属性を持っていますen "英語です。

私はposts_controllerでindexアクションに次の方法があります:私は、このコード"エス"または"エン"

で取得 I18n.locale.to_sと現在の言語を取得し

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 

質問:私のウェブサイトのユーザーが現在使用している言語の結果のみを表示するにはどうすればよいですか?

ありがとうございました!

答えて

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 

などあります!

関連する問題