2

我的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。

我该怎么做?

谢谢!

4

3 回答 3

7

可数是你的答案!

@en_posts = @posts.find_all { |post| post.language == 'en' }
于 2012-05-22T17:05:59.173 回答
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

非常感谢你!

于 2012-05-22T18:08:04.087 回答
0

如果您想将其范围限定在@posts您可以执行以下操作:

@posts.where(language: 'en')

或者以一般的方式

Post.where(language: 'en')
于 2012-05-22T16:46:20.960 回答