0

フィールドを持つモデルPhoneがあります。checked_byこのフィールドが 1 の場合、この電話はチェックされていないこと、そうでない場合 (>1) -チェックされていることがわかります。管理者側では、次のリストを確認できます。確認するには、Phonesmeta_search を使用してフィルターを作成する必要があります。

  • すべての電話
  • チェック済み
  • 未チェック

checked_by_greater_than、またはchecked_by_less_thanmeta_search のメソッドを見ることができますが、これらのメソッドを 1 つの選択ボックスに組み合わせるにはどうすればよいですか?

アドバイスをありがとう

4

1 に答える 1

1

スコープと作り付けのフィールドで。

スコープ:

class Phone < ActiveRecord::Base

  scope :checked, lambda { |value| 
      !value.zero? ? checked_by_greater_than(1) : where(:checked_by => 1)
  }

end

次に、値として返される 3 つの値を持つ選択ボックスを追加[nil, 0, 1]し、コントローラーでそのパラメーターを使用して新しいスコープを適用します。

class PhonesController < ApplicationController

  def index

    # ...
    @phones ||= Phone.scoped
    checked_select_value = params.delete("checked_select") # here use the name of your form field
    if checked_select_value.present?
      @phones = @phones.checked(checked_select_value.to_i)
    end
    # now apply the rest of your meta-search things to the @phones

    #
  end
end
于 2012-09-28T08:31:04.917 に答える