表单验证失败后jQuery不起作用

时间:2014-11-03 02:43:14

标签: javascript jquery ruby-on-rails coffeescript jquery-file-upload

我正在使用Rails 4和jQuery-File-Upload,并且在表单验证和jQuery激活方面存在一些问题。在我提交表单后,如果表单中有错误,我会在我的respond_to js.erb文件中再次呈现表单,如下所示:

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

这会显示所有验证错误,但同时会禁用不会再次初始化的jQuery-File-Upload。现在,当我想提交一个新表单时,它不能正常工作,它只是在提交后显示代码,因为没有jQuery函数。在我再次渲染表单后,我该怎么做才能再次初始化jQuery。

我试着把它放在我的咖啡因中,但没有帮助:

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

它不会将表单的呈现记录为页面加载。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来这可能是rails 4,jquery和turbolinks的问题。将turbolinks视为整个页面的ajax替代品。它默认使用rails 4.它和jquery的问题是你的jquery运行并在第一次加载页面时绑定了...并且不会重新运行以绑定到下一页上的新内容&#34; load& #34 ;.如果您手动刷新页面并且问题停止,则可能表明这一点。

有两种可能的解决方案。在过去,我采取了快速短期解决方案,只是扯掉了turbolinks这里有一个链接,说明如何做到这一点:

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

或者,有一个宝石可以帮助turbolinks与你的项目很好地结合。我还没有使用它,但是在这个stackoverflow中已经讨论过了:

Rails 4 TurboLinks and jQuery Dynamic Links Not Playing Nice