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();
});
答案 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代码。这不是你的情况。