Rails check_box_tag 需要检查属性是否为真
Rails check_box_tag needs to be checked if attribute is true
我有一个 rails 礼物选项 check_box_tag 默认为未选中 (false)。 ajax 调用在选中时正确发布数据 (true),但我正在努力弄清楚如何跨页面保留数据。例如,如果我 select 礼品选项然后返回购物,当我再次进入购物车页面时,我应该看到复选框仍然是 selected。我浏览了文档并尝试将 current_cart.gift_option 放在标签内的不同位置,但我无法弄清楚如何让复选框显示为已选中(如果它在数据库中为 "true")。
show.html.haml
%div.cart-tfoot-gift-option.gift-option-container
%h4.hdr.hdr-quinary Is this order a gift?
%span.form-group-controls
= check_box_tag :gift_option, current_cart.gift_option ? 'true' : 'false', id: 'gift_option'
%label#gift_label.tooltip{:for => 'gift_option'}
Yes, don't display price on packing slip.
Cart.js.coffe
gift_option: ->
$checkbox = $('#gift_option')
$message_container = $('#add-gift-message')
$message_input = $('#gift_message')
$checkbox.on 'change', (event) ->
if $(this).prop('checked')
q.Ajax.message("Adding gift option")
setTimeout () ->
q.Ajax.remove()
, 1000
method_data = { 'gift_option': $checkbox.prop('checked'), 'gift_message': $message_input.val() }
q.Cart.giftAjax(method_data, $message_container.show())
else
q.Ajax.message("Removing gift option")
setTimeout () ->
q.Ajax.remove()
, 1000
method_data = { 'gift_option': $checkbox.prop('checked'), 'gift_message': $message_input.val() }
q.Cart.giftAjax(method_data, $message_container.hide())
$message_input.keyup _.debounce((->
method_data = { 'gift_option': $checkbox.prop('checked'), 'gift_message': $message_input.val() }
q.Cart.giftAjax(method_data)
), 1000)
看起来问题出在视图中的 check_box_tag
助手。您似乎将值选项设置为 'true' 或 'false'(取决于 gift_option
的值),但不是选中的选项(默认为 false
)。尝试类似的东西:
= check_box_tag 'gift_option', 'true', current_cart.gift_option, id: 'gift_option'
(值 'true' 只有在复选框被选中时才会发布。)
见http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag
我有一个 rails 礼物选项 check_box_tag 默认为未选中 (false)。 ajax 调用在选中时正确发布数据 (true),但我正在努力弄清楚如何跨页面保留数据。例如,如果我 select 礼品选项然后返回购物,当我再次进入购物车页面时,我应该看到复选框仍然是 selected。我浏览了文档并尝试将 current_cart.gift_option 放在标签内的不同位置,但我无法弄清楚如何让复选框显示为已选中(如果它在数据库中为 "true")。
show.html.haml
%div.cart-tfoot-gift-option.gift-option-container
%h4.hdr.hdr-quinary Is this order a gift?
%span.form-group-controls
= check_box_tag :gift_option, current_cart.gift_option ? 'true' : 'false', id: 'gift_option'
%label#gift_label.tooltip{:for => 'gift_option'}
Yes, don't display price on packing slip.
Cart.js.coffe
gift_option: ->
$checkbox = $('#gift_option')
$message_container = $('#add-gift-message')
$message_input = $('#gift_message')
$checkbox.on 'change', (event) ->
if $(this).prop('checked')
q.Ajax.message("Adding gift option")
setTimeout () ->
q.Ajax.remove()
, 1000
method_data = { 'gift_option': $checkbox.prop('checked'), 'gift_message': $message_input.val() }
q.Cart.giftAjax(method_data, $message_container.show())
else
q.Ajax.message("Removing gift option")
setTimeout () ->
q.Ajax.remove()
, 1000
method_data = { 'gift_option': $checkbox.prop('checked'), 'gift_message': $message_input.val() }
q.Cart.giftAjax(method_data, $message_container.hide())
$message_input.keyup _.debounce((->
method_data = { 'gift_option': $checkbox.prop('checked'), 'gift_message': $message_input.val() }
q.Cart.giftAjax(method_data)
), 1000)
看起来问题出在视图中的 check_box_tag
助手。您似乎将值选项设置为 'true' 或 'false'(取决于 gift_option
的值),但不是选中的选项(默认为 false
)。尝试类似的东西:
= check_box_tag 'gift_option', 'true', current_cart.gift_option, id: 'gift_option'
(值 'true' 只有在复选框被选中时才会发布。)
见http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag