rails check_box_tag set checked with default value

老子叫甜甜 提交于 2020-01-01 07:33:06

问题


I currently have a rails check_box_tag call that looks like

check_box_tag #{name}

I want to include a checked attribute, which I know I can do with

check_box_tag name, value, checked

But what if I want to set it to checked without explicitly specifying value (I just want to use the default). Or similarly, what if I wanted to specify html options without specifying the checked attribute. Is there a way to do this?


回答1:


Just wanted to update this. The third parameter for check_box_tag is a boolean value representing the checked status.

check_box_tag name, value, true



回答2:


If you want the checkbox to be checked, then

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

otherwise

check_box_tag name, value



回答3:


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

Examples:

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




回答4:


There are no ways to do it directly. But the check_box_tag implementation is trivial, you can monkey patch it or create own helper.

Original implementation:

  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



回答5:


If anyone have column type boolean then look at this. is_checked? will be default boolean value. It worked for me.

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




回答6:


If you pass in a value of "1" to the value field, it will pass-on the value of the real state of the checkbox, regardless of the checked default value:

is_checked = <default boolean>

check_box_tag :show_defaults, '1', is_checked

(now always reflects user input)



来源:https://stackoverflow.com/questions/11796629/rails-check-box-tag-set-checked-with-default-value

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!