ruby-on-rails - 处理来自远程真 Rails 的响应时出错

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

我正在使用 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/

相关文章:

javascript - 通过 JQuery Ajax Post 请求提交表单

java - JSF2 "f:ajax render"渲染超过指定的 id

javascript - Rails Assets 管道 : JavaScript being executed twice

c# - 厌倦了非语义测试来弥补动态类型-建议吗?

ruby-on-rails - 如何更改 Rails 3 中的默认 Rails 服务器?

ruby-on-rails - 如何在网页中动态显示 ping 输出?

ruby-on-rails - 如何在不执行 "update_attributes"的情况下执行 "before_save"?

ruby-on-rails - 如何在 Rails 3 中获取资源的绝对路径?

ruby-on-rails - 使用 Ruby Controller 读取 Instagram JSON 并使用 HTTParty gem 传递到 View

ruby-on-rails - 是否可以在 Mac Os 10.7.5 上安装 ruby​​ 2.3.4?