web-dev-qa-db-ja.com

ブールフィールドのラジオボタン、「false」を実行する方法は?

現在、Rails 3にいくつかの単純なtrue/falseラジオボタンを挿入しようとしていますが、ラジオボタンに「false」を挿入させる方法が見つかりません。

私のコードは次のとおりです。

<%= f.radio_button :accident_free, true %><label for="auction_accident_free_true">ja</label>
<%= f.radio_button :accident_free, false %><label for="auction_accident_free_false">nein</label>

私はすでに試しました:

  • 1/0
  • 「1」/「0」
  • 真/偽
  • "真/偽"
  • "はい・いいえ"

しかし、値がfalseの場合は何も正しく機能しないようです。私のフィールドは

validates_presence_of :accident_free

誤ったボタンをクリックすると、続行するには入力する必要があるというメッセージが常に表示されます。 trueボタンをクリックすると正常に動作しますが、falseは認識されません。

誰かがそれを正しく行う方法を知っていますか?

前もって感謝します

アルネ

21
arnekolja

これです:

http://apidock.com/Rails/ActiveRecord/Validations/ClassMethods/validates_presence_of

validates_presence_of()は、指定された属性が空白ではないことを検証します(Object#blank?で定義されています)。

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

これはObject#blankの方法によるものですか?ブール値を処理します:false.blank? # => true

足場と"1"および"0"を使用して例を試しました。

<%= f.radio_button :foo, "0" %>
<%= f.radio_button :foo, "1" %>

そして彼らは働いた。

54
nonopolarity

私は最近、これに対する別の解決策に行き着きました:

validates_presence_of :accident_free, :if => 'accident_free.nil?'

説明 ここ

3