背景介绍:由于某种原因不能使用check_box,只能使用check_box_tag,check_box_tag 有个属性value, 如果写“1”那就在选中后返回1,如果没有选择就啥也没有了,那么如何实现选中返回1,没选择返回0呢?
首先check_box是可以做到的,我们可以看看它是啥
# Let's say that @post.validated? is 1:
check_box("post", "validated")
# => <input name="post[validated]" type="hidden" value="0" />
# <input checked="checked" type="checkbox" id="post_validated" name="post[validated]" value="1" />
# Let's say that @puppy.gooddog is "no":
check_box("puppy", "gooddog", {}, "yes", "no")
# => <input name="puppy[gooddog]" type="hidden" value="no" />
# <input type="checkbox" id="puppy_gooddog" name="puppy[gooddog]" value="yes" />
check_box("eula", "accepted", { class: 'eula_check' }, "yes", "no")
# => <input name="eula[accepted]" type="hidden" value="no" />
# <input type="checkbox" class="eula_check" id="eula_accepted" name="eula[accepted]" value="yes" />
再来看看check_box_tag是啥check_box_tag (ActionView::Helpers::FormTagHelper) - APIdockhttps://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag
check_box_tag 'accept'
# => <input id="accept" name="accept" type="checkbox" value="1" />
check_box_tag 'rock', 'rock music'
# => <input id="rock" name="rock" type="checkbox" value="rock music" />
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" />
看的很明显,check_box比check_box_tag多了一个可以隐藏input
所以在使用check_box_tag可以自己添加一个:
<%= hidden_field_tag "name", "0" %>
<%= check_box_tag "name", "1", true %>