这里是 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/