【发布时间】:2019-07-12 14:41:30
【问题描述】:
我正在使用 rails 3.1 和 ruby 1.9.2。使用 checkbox_tag 我希望当我单击复选框时,将一个变量(例如@post)设置为 true,然后将其传递给控制器。我该怎么做?
【问题讨论】:
-
你的意思是异步(没有页面刷新)?这称为 AJAX,可帮助您进行 Google 搜索。
我正在使用 rails 3.1 和 ruby 1.9.2。使用 checkbox_tag 我希望当我单击复选框时,将一个变量(例如@post)设置为 true,然后将其传递给控制器。我该怎么做?
【问题讨论】:
以下是使用 ajax 从视图中实时编辑/保存的 jquery 和视图代码示例:
在 application.js 中:
jQuery('#tranx_field').live('change', function() {
var attr_value = $(this).val();
var attr_name = $(this).next("input[id=attr_name]").val();
var tranx_id = $(this).parent().parent().parent().children("input[id=tranx_id]").val();
$.ajax({
url: "/tranxes/" + tranx_id,
dataType: "json",
type: "PUT",
processData: false,
contentType: "application/json",
data: "{\"tranx\":{\"" + attr_name + "\":\"" + attr_value + "\"}}"
});
});
以及查看代码:
<%= hidden_field_tag 'tranx_id', @tranx.id %>
<div class="row">
<div class="span6 id="left_col">
<b>Salesrep:</b>
<%= text_field_tag 'tranx_field', @tranx.salesrep,:class => "itemfieldsm" %>
<%= hidden_field_tag 'attr_name', "salesrep" %>
<br>
【讨论】:
在视图中您可以添加以下内容
hidden_field_tag 'post', false
check_box_tag 'post', true
在提交表单时在控制器中分配它:
@post = params[:post]
隐藏值只是设置默认值,如果选中复选框,则会被覆盖
【讨论】: