1

我正在使用Rails 4和jQuery-File-Upload,并且在表单验证和jQuery激活时遇到了一些问题。我提交表单后,如果有内部形状一些错误,我再次呈现形式我respond_tojs.erb文件中是这样的:表单验证失败后jQuery不起作用

<% if @cat.new_record? %> 
    $('#new_cat').html('<%= j render('form') %>'); 
<% else %> 
    ... 
<% end %> 

这将显示所有验证错误,但在同一时间禁用jQuery的文件上传它没有按”再次初始化。现在当我想提交一个新表单时,它不能正常工作,并且在提交后只显示代码,因为没有jQuery函数存在。在我再次呈现表单后,我能做些什么来重新初始化jQuery。

我试图把这个我的CoffeeScript,但没有帮助里面:

$(document).on "ready page:load", initMyFunction 

它不记录呈现形式的页面加载的。有任何想法吗?

回答

1

这听起来像它可能是导轨4,jquery和turbolinks的问题。将turbolinks想象成整个页面的替代品。它带有rails 4的默认设置。它和jquery的问题在于你的jquery在第一次加载页面时运行,并且不会重新运行以绑定到下一页“加载”的新内容。如果您手动刷新页面并且问题停止,则可能是此问题的一个标志。

有两种可能的解决方案。在过去,我已经采取的刚剥开turbolinks这里快速的短期解决方案是一个链接与说明,如何做到这一点:

http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4

另外还有一个宝石,可以帮助turbolinks发挥好与你项目。我还没有使用它,但它在这个计算器中讨论:

Rails 4 TurboLinks and jQuery Dynamic Links Not Playing Nice

+0

谢谢。这绝对是一个问题!我不想从我的应用程序中删除turbolinks,所以我正在寻找一些不同的解决方案。如果表单再次呈现,您认为如何注册?我试图在包装表单的div上听'change',但它没有注册'div'的变化。 – Bosquets 2014-11-04 00:20:51

+0

我开始尝试在上面链接的其他堆栈溢出问题中提到的jquery-turbolinks宝石。我相信它保持涡轮链接,但解决与他们和jQuery的问题。 – Rose 2014-11-04 05:06:28