Javascript 验证失败后,为什么jQuery$(document).ready()未在Rails呈现视图内触发?

Javascript 验证失败后,为什么jQuery$(document).ready()未在Rails呈现视图内触发?,javascript,jquery,ruby-on-rails,ruby-on-rails-4,document-ready,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,Document Ready,我有一个Rails应用程序,运行Rails g scaffold friends name。在我的好友模型中,我将以下内容放入: class Friend < ActiveRecord::Base validates_presence_of :name end 这是我给朋友的表格: <%= form_for(@friend) do |f| %> <% if @friend.errors.any? %> <div id="error_exp

我有一个Rails应用程序,运行
Rails g scaffold friends name
。在我的好友模型中,我将以下内容放入:

class Friend < ActiveRecord::Base
    validates_presence_of :name
end
这是我给朋友的表格

<%= form_for(@friend) do |f| %>
  <% if @friend.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@friend.errors.count, "error") %> prohibited this friend from being saved:</h2>

      <ul>
      <% @friend.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<script type="text/javascript">
  $(function(){
    console.log("Hello world!");
  });
</script>

禁止保存此朋友:

$(函数(){ log(“你好,世界!”); });
如您所见,我的表单底部有jQuery
$(document).ready()
,它记录了Hello world当我加载表单时

当我提交没有名称的表单时,它会再次呈现新模板,但不会调用jQuery
$(document).ready()

演示:

验证失败时,如何在render new partial中再次触发jQuery
$(document).ready()


为什么会发生这种情况?

Rails4
中,涡轮链接的概念将默认出现。因此,
$(document).ready()
将无法正确加载,因此您可以遵循以下选项

var ready;
     ready = function() {

        console.log("Hello world!");

        };

        $(document).ready(ready);
        $(document).on('page:load', ready);

您可以使用gem来避免这个问题

您可以使用其他
turbolinks
解决此问题


希望它能解决您的问题。

您使用的是
turbolinks
概念吗?
var ready;
     ready = function() {

        console.log("Hello world!");

        };

        $(document).ready(ready);
        $(document).on('page:load', ready);
$(document).on('ready page:load', function () {
     console.log("Hello world!");
});