我正在使用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
它不会将表单的呈现记录为页面加载。有什么想法吗?
答案 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