我在 posts_controller.rb :
中执行此操作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 => 1
end
@posts = @search.results
).page(params[:page]).per(20)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.json { render :json => @posts }
end
end
实例变量@posts
是一个数组。
帖子模型有一个属性language
。
我希望仅使用@posts
@post.language == "en"
我正在使用mongoid odm。
我该怎么做?
谢谢!
答案 0 :(得分:7)
可以说是你的答案!
@en_posts = @posts.find_all { |post| post.language == 'en' }
答案 1 :(得分:1)
问题得到解决。我已将此条件添加到太阳黑子中:
if params[:locale].present?
s.with(:language, params[:locale])
else
params[:locale] = I18n.locale
s.with(:language, params[:locale])
end
所以方法是:
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 => 1
if params[:locale].present?
s.with(:language, params[:locale])
else
params[:locale] = I18n.locale
s.with(:language, params[:locale])
end
end
@posts = @search.results
).page(params[:page]).per(20)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.json { render :json => @posts }
end
end
非常感谢!
答案 2 :(得分:0)
如果您希望将其范围置于@posts
下,则可以执行以下操作:
@posts.where(language: 'en')
或以通用方式
Post.where(language: 'en')