5

チェックボックスをオフにすると、チェックボックス フィールド ( ) で検証エラーが発生しますPerishable can't be blank。ログを確認すると、チェックを外すと「腐りやすい」=>「0」が渡され、チェックすると「腐りやすい」=>「1」が渡されることがわかります。「腐りやすい」はコントローラーでホワイトリストに登録されており、チェックボックスがオンになっているとすべて機能します。何が起きてる?

モデル:

class Product < ActiveRecord::Base
  validates_presence_of :perishable
end

移行:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.boolean :perishable, :null => false
    end
  end
end

意見:

= f.label :perishable
= f.check_box :perishable

レンダリング ビュー:

<label for="product_perishable">Perishable *</label>
<input name="product[perishable]" type="hidden" value="0" />
<input id="product_perishable" name="product[perishable]" type="checkbox" value="1" />
4

1 に答える 1

8

の場合に明らかに問題を引き起こすブールフィールドの存在を検証していますfalse

この答えに従って:

ブール フィールド (実際の値はtruefalse) の存在を検証する場合は、 を使用しますvalidates_inclusion_of :field_name, :in => [true, false]

于 2013-08-07T21:57:54.947 に答える