处理来自远程真实轨道的响应时出错?

时间:2013-05-10 17:01:11

标签: ruby-on-rails ajax ruby-on-rails-3

我正在使用rails remote true进行ajax调用。但我在处理休息形式控制器时有错误。我正在做的是我已经放置了一个部分的表单,我第一次在视图中呈现,我也在form_for的html选项中给它一个id。我还在该表单上应用了一些jquery,如保存和取消按钮以及其中一个字段上的日期选择器的一个脚本。当我使用format.js处理来自服务器的repose来渲染js文件时,我在其中放置了如下代码

if @vairable.save
 format.js { render 'some-file' }
else
 format.js { render 'something'}
end  

如果变量保存成功,我会正确关闭表单,但如果发生验证,我会通过在js.erb文件中编写java脚本代码再次呈现表单。我在处理此回复时遇到问题。错误正在显示,但当表单再次出现错误时,应用于其字段和按钮的jquery事件不起作用。 jquery事件不会发生。我非常关心这个问题。

请帮助我... ... 提前谢谢......

仅在模型验证发生且使用新渲染表单显示验证轨道时才会出现此问题。

1 个答案:

答案 0 :(得分: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");
});