在Rails中的复选框上实现AJAX调用以更新db

时间:2014-04-22 00:46:32

标签: javascript jquery ruby-on-rails ajax checkbox

Rails新手在这里。

我正在尝试创建一个名为“Active”的复选框,当复选框被选中/取消选中时,它将充当表单,并使用AJAX自动使用已更改的属性更新数据库(不使用提交按钮)。我正在使用此处的说明:http://trevorturk.com/2010/08/24/easy-ajax-forms-with-rails-3-and-jquery/但似乎无法使其正常工作。

在我看来:

<%= form_for @post, :remote => true do |f| %>
<%= f.label :active %>
<%= f.check_box :active, :class => 'submittable' %>
<% end %>

在我的posts_controller.rb

def update
if @post.update(post_params)
  flash[:notice] = "Your post was edited."
  redirect_to post_path(@post)
else
  render :edit
end
end

然后我使用以下代码在我的views / posts文件夹中创建了一个名为'archive.js.erb'的文件:

$('.submittable').live('change', function() {
  $(this).parents('form:first').submit();
});

1 个答案:

答案 0 :(得分:2)

我已经尝试了你的代码,问题似乎是关于javascript的live方法。如果我改为点击功能,它可以工作:

$(document).ready(function(){

    $('.submittable').click(function() {
        $(this).parents('form:first').submit();
    });

}); 

编辑:忘了提到这个javascript包含在app / assets / javascripts目录中。这是因为必须在document.ready上加载javascript才能使jQuery ajax具有您想要的效果。

如果您的控制器上有一个arquive操作,则必须存在arquive.js.erb文件,并且稍后将执行其中的javascript代码。这不是你的情况。