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"

私はモンゴイド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 に答える