簡體   English   中英

使用Ajax更新Rails索引視圖中的復選框值

[英]Update checkbox value in a Rails index view by using Ajax

我想在Rails應用程序中應用一個小的Ajax示例。 我在索引視圖中有一個帶有復選框的項目模型。 我為在索引視圖中呈現的復選框創建了一個form_for。 我想檢查復選框並更新數據庫中的復選框值。 我正在學習Ajax,並通過添加beforeSend和function(data)進行了一些測試。 從我閱讀的內容來看,Ajax具有POST和GET。 如果我添加類型:'POST',Rails會嘗試創建一些東西,找不到有效的路由路徑,並且會出錯。 我想更新在Rails中是PUT的數據庫中的復選框值。 我應該如何進行? 您能指出我正確的方向嗎?

這是我在索引視圖中呈現的表單。

<%= form_for(c, remote: true) do |k| %>
<%= k.check_box :recyclable, :class => "active_testdef_cl", :id => "item_recyclable_#{c.id}", 'data-recyclable' => c.recyclable %>
<% end %>

這是腳本。

<script>
     $(document).ready(function() {
       for (var i=0; i < 2; i++ ) {          
             $('#item_recyclable_'+i).on('change', function(){               
             var url='/items'
             var form_data = $('#cc_form').serialize;
             var checkbox_value = $('#item_recyclable_'+i).val();
                  $.ajax({
                  type: 'GET',
                  url: url,                  
                  data: checkbox_value,
                      beforeSend:function(){
                          // $('#test_message').innerHTML=("hello Christina");
                          //alert("hi m")
                      },                 
                    success: function(data) {
                        //$('#test_result').html(data);
                          document.getElementById('test_result').innerHTML=data; 
                    }
              });
              return false;
          });
       };
    }); 
</script>

靜態路由將“ PUT”和“ DELETE”方法分配給各種請求,但實際上,由於許多瀏覽器(也許只是IE的某些版本)不允許使用這些http方法,因此往往不使用它們。 因此,實際上您只發送GET和POST請求。

解決方法是發送一個額外的參數"_method" (注意下划線),您可以將其設置為“ PUT”或“ DELETE”。 所以,如果您要添加

"_method": "PUT"

到ajax調用的數據,然后Rails應該將其作為PUT請求處理。 我真的不知道在定義form_data然后不使用它時ajax中發生了什么。

如果在rails中使用form_for輔助程序,並且它調用了update操作,請在瀏覽器中查看呈現的html。 您將看到一個隱藏的div,其中包含如下輸入:

<div style="display:none;">
  <input type="text" name="_method" value="UPDATE">
</div>

這是Rails為您設置的解決方法。 請參閱http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-patch-put-or-delete-methods-work-questionmark

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM