0

我在我的rails項目中使用sunpost gem進行搜索。太陽黑子與i18n框架在導軌3.2

我在我的應用程序現在兩種語言:

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

我在post.rb模型,包含值爲西班牙語或價值「,「ES」語言屬性英語爲「」。

我在posts_controllerindex動作下一個方法:

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」

得到

我的問題是:如何才能顯示當前用戶在我的網站中使用的語言的結果?

非常感謝!

回答

1

如果您可以在post模型中發佈可搜索的塊,這將非常有幫助。但在那之前,我會刺探它。

你的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 

那裏你有它!