5

我正在使用 Rails 远程 true 进行 ajax 调用,但在处理响应表单控制器时出错。

我正在做的是我已经在部分中放置了一个表单,我第一次在视图中呈现,并且我还在 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 事件不会发生。

仅当发生模型验证并且验证轨道与新的渲染表单一起显示时,才会出现此问题。

4

1 回答 1

2

您应该将您的响应包装在这样的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");
});
于 2013-05-10T17:34:45.260 回答