0

Items と呼ばれる Rails モデルをチェックする 2 つのフィルターがあります。両方のフィルターが有効になっている場合、つまり、特定のパラメーターが渡された後、最初のフィルターに基づいてアイテムをフィルター処理し、最初のフィルターの結果をベースとして使用して、2 番目のフィルターをフィルター処理する必要があります。しかし、ビューに渡される @items のインスタンス変数で .where を呼び出すのは好きではありませんか? 何かご意見は?

エラー: 未定義のメソッド `where' for #

コード:

@coasters = Coaster.all

    if params[:type]
      type = params[:type]
      if type == 'powered'
        @coasters = @coasters.where("style = ?", "powered")
      else
        @coasters = @coasters.where("material LIKE ?", params[:type])
      end
    end

    if params[:letters]
      letters = params[:letters]
      if letters == '#'
        @coasters = @coasters.all.select { |r| /^[0-9].*/ =~ r.name }
      else
        letters = letters.split('-')
        lettersLower = (letters[0]..letters[1]).to_a
        lettersUpper = (letters[0].upcase..letters[1].upcase).to_a
        letters = lettersLower.concat(lettersUpper)
        conditions = (letters.map{ |letter| " name ILIKE '#{letter}%' " }.join('OR'))
        @coasters = @coasters.where(conditions)
      end
    end
4

0 に答える 0