web-dev-qa-db-ja.com

rails check_box_tagセットはデフォルト値でチェックされています

現在Rails check_box_tag呼び出しが

check_box_tag #{name}

私ができることを知っているchecked属性を含めたい

check_box_tag name, value, checked

しかし、明示的にvalueを指定せずにチェック済みに設定したい場合はどうすればよいですか(デフォルトを使用したいだけです)。あるいは、checked属性を指定せずにHTMLオプションを指定したい場合も同様です。これを行う方法はありますか?

20
Jeff Storey

これを更新したかっただけです。 check_box_tagの3番目のパラメーターは、チェックされたステータスを表すブール値です。

check_box_tag name, value, true
16
KPheasey

チェックボックスをオンにする場合は、

check_box_tag name, value, {:checked => "checked"} 

さもないと

check_box_tag name, value
8
user2516008

check_box_tag(name、value = "1"、checked = false、options = {})

例:

check_box_tag 'receive_email', 'yes', true
# => <input checked="checked" id="receive_email" name="receive_email" type="checkbox" value="yes" />

check_box_tag 'tos', 'yes', false, class: 'accept_tos'
# => <input class="accept_tos" id="tos" name="tos" type="checkbox" value="yes" />

check_box_tag 'eula', 'accepted', false, disabled: true
# => <input disabled="disabled" id="eula" name="eula" type="checkbox" value="accepted" />

api.rubyonrails.org

6
shilovk

直接行う方法はありません。しかし check_box_tag実装は簡単です。それをサルパッチするか、独自のヘルパーを作成できます。

元の実装:

  def check_box_tag(name, value = "1", checked = false, options = {})
    html_options = { "type" => "checkbox", "name" => name, "id" => sanitize_to_id(name), "value" => value }.update(options.stringify_keys)
    html_options["checked"] = "checked" if checked
    tag :input, html_options
  end
4
dimuch

誰かがブール型のブール型を持っている場合は、これを見てください。 is_checked?デフォルトのブール値になります。それは私のために働いた。

<%= hidden_field_tag :name, 'false' %> <%= check_box_tag :name, true, is_checked? %>

2
viks

値フィールドに「1」の値を渡すと、チェックされたデフォルト値に関係なく、チェックボックスの実際の状態の値が渡されます。

is_checked = <default boolean>

check_box_tag :show_defaults, '1', is_checked

(現在は常にユーザー入力を反映しています)

0
Taylor Roozen