Rails通过jquery从所有复选框获取状态并将其发送给控制器
到目前为止,我有以下设置: 我的复选框声明如下:Rails通过jquery从所有复选框获取状态并将其发送给控制器,jquery,ruby-on-rails,ajax,checkbox,Jquery,Ruby On Rails,Ajax,Checkbox,到目前为止,我有以下设置: 我的复选框声明如下: <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">Mea
<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>
<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>
一餐
我有以下JQuery代码:
<script>
$(document).ready(function() {
$("input[type='checkbox']").change(function() {
$("#change_me").html("<%= j render(partial: 'dynamic_test') %>");
});
});
</script>
$(文档).ready(函数(){
$(“输入[type='checkbox']”)。更改(函数(){
$(“#change_me”).html(“”);
});
});
因此,只要我选中或取消选中一个复选框,我就想得到所有复选框的check属性并将它们发送到我的控制器(ajax?),然后我想在那里执行一些select查询并在“dynamic_test”中呈现它。有人能给我一个想法,如何实现数据发送到我的控制器
编辑:
My_dynamic_test.html.erb包含:
Some Test!
<%= @check_box_val %>
一些测试!
编辑2:
我让它像这样工作:
<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>
<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>
$(文档).ready(函数(){
$(“输入[type='checkbox']”)。更改(函数(){
所选的var_复选框_val=[];
$(“输入[type='checkbox']”)。每个(函数(){
如果(选中此项){
选中复选框值推送(this.getAttribute(“name”));
}
});
$.ajax({
url:“/fends/dynamic_test”,
类型:“POST”,
数据:{
值:选中的复选框值
},
数据类型:“脚本”
});
});
});
如果你能找到更好的方法,我愿意改变。你应该这样做
<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>
您应该有一个名为dynamic_test.js.erb
的文件,其中包含以下代码
$("#change_me").html("<%= j render(partial: 'dynamic_test', locals: {check_box_val: @check_box_val}) %>");
注:
您可以更改部分的名称,以避免主模板和部分模板之间的混淆。您希望将它们发送到哪个控制器操作?发送到“膳食控制器动态测试”,因为这是我希望在“渲染部分”之后显示的内容。确定。我有答案给你!谢谢你的回答。但我无法理解@check_box_val。它唯一的内容是“开”,但我需要知道哪个复选框有什么值。@Maxung您的
动态测试
部分包含什么?请在问题中分享我是否需要遍历页面上的所有复选框,将它们写入数组,然后通过ajax发送?@Maxung Yes!这可以让事情变得更简单,因为我们可以通过它的索引跟踪复选框。“某些测试![“打开”、“打开”、“打开”]”即使只选中了最后一个复选框。我认为它必须做点什么。val()但是我找不到其他函数。