我试图组织JS文件"rails way"时,在我的Rails 4应用程序中遇到了一个问题.他们以前分散在不同的观点中.我将它们组织成单独的文件,并使用资产管道进行编译.但是,我刚刚了解到,当打开turbo-linked时,jQuery的"就绪"事件不会触发后续点击.第一次加载页面时它可以工作.但是当你点击链接时,内部的任何内容ready( function($) {都不会被执行(因为页面实际上并没有再次加载).好解释:这里.
所以我的问题是:在启用turbo-links时,确保jQuery事件正常工作的正确方法是什么?您是否将脚本包装在特定于Rails的侦听器中?或者也许rails有一些魔力让它变得不必要?文档对于它应该如何工作有点模糊,特别是关于通过像application.js这样的清单加载多个文件.
我在我的应用程序中有一个表单,我可以从日期选择器日历中选择一个日期.刷新页面时,单击表单时会出现日期选择器日历.这是正确的行为.
但是,当我使用链接从其他页面到达同一页面时,单击表单后不会显示日历.我必须刷新页面才能使日历可见.
这是我的表单页面:
# app/views/reservations/_form.html.erb
...
<div class="row reservations">
<div class="span2 field">
<%= f.label :mydate %><br />
<%= f.text_field :mydate, class: "input-append date datepicker", value: Date.today.strftime('%d-%m-%Y') %>
</div>
...
Run Code Online (Sandbox Code Playgroud)
我的javascript代码:
# app/assets/javascripts/reservations.js.coffee
$ -> $('.date').datepicker({
format: 'dd-mm-yyyy'
autoclose: true
todayHighlight: true
language: 'fr'
});
Run Code Online (Sandbox Code Playgroud)
和Gemfile:
source 'https://rubygems.org'
ruby "2.0.0"
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0.beta1'
gem 'bootstrap-sass', '2.3.1.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'protected_attributes'
gem 'will_paginate'
gem 'bootstrap-will_paginate'
gem 'bootstrap-datepicker-rails'
gem 'rails-i18n'
gem 'pg'
# …Run Code Online (Sandbox Code Playgroud)