2017-06-03 4 views
0

をコントローラに送信します。Railsはjqueryのを経由して、すべてのチェックボックスからステータスを取得し、これまでのところ、私は次のセットアップを持っている

私のチェックボックスは、次のように宣言されています

<label id="cb2" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-1"> 
    <input type="checkbox" id="checkbox-1" class="mdl-checkbox__input"> 
    <span class="mdl-checkbox__label">Meal</span> 
</label> 

そして私は、次のjQueryコードを持っています:だから、できるだけ早く私がチェックするか、私はすべてのチェックボックスのチェック属性を取得し、私はその後、いくつかの選択クエリを実行したい場合は、(アヤックス?)私のコントローラに送信する]チェックボックスをオフにして

<script> 
    $(document).ready(function() { 
    $("input[type='checkbox']").change(function() { 
     $("#change_me").html("<%= j render(partial: 'dynamic_test') %>"); 
    }); 
    }); 
</script> 

それを "dynamic_test"でレンダリングします。誰かが私のコントローラに送信するデータを実装する方法について私にアイデアを教えてもらえますか?

編集:

マイ_dynamic_test.html.erbが含まれています

Some Test! 
<%= @check_box_val %> 

EDIT2:

私はそれがこのように動作するようになった:あなたが表示された場合

<script> 
$(document).ready(function() { 
$("input[type='checkbox']").change(function() { 
    var selected_checkbox_val = []; 
    $("input[type='checkbox']").each(function() { 
     if (this.checked) { 
      selected_checkbox_val.push(this.getAttribute("name")); 
     } 
    }); 
    $.ajax({ 
     url: "/meals/dynamic_test", 
     type: "POST", 
     data: { 
     value: selected_checkbox_val 
     }, 
     dataType: 'script' 
    }); 
    }); 
}); 
</script> 

より良い方法、私は変更のために開いています。

+0

どのコントローラにアクションを送信しますか? – Pavan

+0

"meals_controller#dynamic_test"には、後で "render partial"で表示したいからです。 – Maxung

+0

私はあなたに答えました! – Pavan

答えて

0

これは、あなたがそれをコントローラdynamic_test方法

def dynamic_test 
    @check_box_val = params[:value] 
    respond_to do |format| 
    format.js 
    format.html 
    end 
end 

<script> 
$("input[type='checkbox']").change(function() { 
    var selected_checkbox_val = $(this).val(); 
    $.ajax({ 
    url: "/meals/dynamic_test", 
    type: "POST", 
    data: { 
     value: selected_checkbox_val 
    }, 
    dataType: 'script' 
    }); 
} 
</script> 

を行う必要がありますそして、あなたは以下のコード

また
$("#change_me").html("<%= j render(partial: 'dynamic_test', locals: {check_box_val: @check_box_val}) %>"); 

dynamic_test.js.erbをファイルと呼ばれている必要があります方法ですあなたはこの方法のために経路を確定するべきです

post "/meals/dynamic_test" => "meals#dynamic_test" 

注:

あなたはメインテンプレート部分テンプレート間の混乱を避けるために、部分的の名前を変更することができます。

+0

あなたの答えをありがとう。しかし、私は@check_box_valを理解できません。コンテンツは「オン」ですが、どのチェックボックスにどのような価値があるのか​​を知る必要があります。 – Maxung

+0

@Maxungあなたの 'dynamic_test'部分には何が入っていますか? – Pavan

+0

私のページのすべてのチェックボックスを反復して配列に書き込んだ後、ajax経由で送信する必要がありますか? – Maxung