javascript - 在 Rails 中的复选框上实现 AJAX 调用以更新数据库

标签 javascript jquery ruby-on-rails ajax checkbox

这里是 Rails 新手。

我正在尝试制作一个名为“事件”的复选框,当复选框被选中/取消选中时,它将充当一个表单,并使用 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();
});

最佳答案

我试过你的代码,问题似乎出在 javascript 的 live 方法上。如果我更改为点击功能,它会起作用:

$(document).ready(function(){

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

}); 

编辑:忘记提及此 javascript 包含在 app/assets/javascripts 目录中。这是因为 javascript 必须加载到 document.ready 上,jQuery ajax 才能产生您想要的效果。

arquive.js.erb 文件必须存在,以防您在 Controller 上执行 arquive 操作,并且稍后将执行其中的 javascript 代码。这不是你的情况。

关于javascript - 在 Rails 中的复选框上实现 AJAX 调用以更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23208462/

相关文章:

ruby-on-rails - Rails 回形针不显示从 Amazon S3 上传的图像

javascript - 不带逗号的 yield 数组

javascript - ASP.NET session 无法自行更新

具有相同类的 jQuery slideToggle HTML 列表

javascript - 你能在IE8中用JS改变z-index吗

jquery - 单击按钮时按 jstree 中的 ID 删除节点

ruby-on-rails - Ruby on Rails 3 中的类方法——我完全迷路了!

ruby-on-rails - 如何防止 Rails Console 对数据库事务执行立即回滚?

javascript - 如何使用 ES6 类添加事件监听器并在 Canvas 中移动对象?

javascript - 折叠具有多个 tbody 元素的表行