我正在使用 Rails remote true 进行 ajax 调用,但在处理响应表单 Controller 时出错。
我正在做的是我第一次在 View 中呈现的部分中放置了一个表单,并且我还在 form_for 的 html 选项中给了它一个 id。我还在该表单上应用了一些 jQuery,例如保存和取消按钮,以及在其中一个字段上的日期选择器脚本。
当我使用 format.js 处理来自服务器的响应以呈现 js 文件时,我在其中放置了如下代码
if @vairable.save
format.js { render 'some-file' }
else
format.js { render 'something'}
end
如果变量保存成功,我会正确关闭表单,但如果发生验证,我会通过在 js.erb 文件中编写 JavaScript 代码再次呈现表单。我在处理此回复时遇到问题。错误显示正确,但是当表单再次呈现错误时,应用于其字段和按钮的 jQuery 事件不起作用。 jQuery 事件不会发生。
此问题仅在发生模型验证且验证栏与新渲染表单一起显示时发生。
最佳答案
您应该将您的回复包裹在 respond_to
中像这样阻止:
respond_to do |format|
if @variable.save
format.js { render 'some-file' }
else
format.js { render 'something'}
end
end
编辑:您的 jQuery 标签应该更改为
$(document).on(...)
.例如。#change this:
$("#your-target-id").click(function(){
alert("This doesn't work after your have submitted via ajax")
});
#to this:
$(document).on("click", "#your-target-id", function() {
alert("This should work after ajax submission, and when errors are displayed");
});
关于ruby-on-rails - 处理来自远程真 Rails 的响应时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16487344/