2015-03-13 61 views
0

我有一個rails禮物選項check_box_tag,默認爲未選中(false)。 ajax調用在檢查時正確發佈數據(true),但我正在努力弄清楚如何在頁面間持久保存數據。例如,如果我選擇禮物選項,然後返回購物,當我再次進入購物車頁面時,我會看到複選框仍處於選中狀態。我已經研究過這些文檔,並將current_cart.gift_option放在標籤中的不同位置,但是我無法弄清楚如何在數據庫中將複選框顯示爲檢查是否爲「true」。如果屬性爲true,則需要檢查Rails check_box_tag

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) 

回答

1

它看起來像問題是與視圖的幫手。您似乎將值選項設置爲「true」或「false」(具體取決於gift_option的值),而不是選中的選項(默認值爲false)。嘗試是這樣的:

= check_box_tag 'gift_option', 'true', current_cart.gift_option, id: 'gift_option' 

(僅當複選框被選中的值 '真' 將被張貼。)

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag

+0

非常感謝!是的,我對於價值意味着什麼感到困惑,但我忘了我需要它作爲爭論的佔位符。我把它設置爲零,它工作。 – kdub 2015-03-13 19:41:55

相關問題