我正在使用rails 3.1和ruby 1.9.2。使用checkbox_tag我希望当我点击复选框时,变量(表示@post)设置为true然后它传递给控制器。我怎么能这样做?
答案 0 :(得分:2)
以下是使用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>
以下链接可帮助我解决这个问题:http://blog.project-sierra.de/archives/1788
答案 1 :(得分:0)
在视图中,您可以添加以下内容
hidden_field_tag 'post', false
check_box_tag 'post', true
提交表单时,在控制器中,您只需指定它:
@post = params[:post]
隐藏值只是设置默认值,如果选中该复选框,将会覆盖该值