Javascript 验证失败后,为什么jQuery$(document).ready()未在Rails呈现视图内触发?
我有一个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 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!");
});