每当我构建Rails应用程序时,我都遇到过这个问题。基本上会发生的是,每次加载应用程序并且你有某种类型的javascript代码,它是工具提示或日期选择器,它只会在你第一次打开页面或刷新页面时加载它
因此,假设您决定访问“服务”页面,并希望选择包含以下代码的日期
$(document).ready ->
$("[data-behaviour~=datepicker]").datepicker(
todayBtn: "linked",
todayHighlight: true,
startDate: "(Time.current, :format => :datepicker)"
format: "yyyy/mm/dd"
)
此代码将在首页加载时正常加载或直到刷新页面为止,但是如果您在页面之间来回切换,则由于某种原因导致代码无法加载。因为在刷新页面之前,日期选择器不会再次出现。
这在开发和生产中都会发生。任何人都知道最新情况并且需要解释吗?我做错了吗?
不,代码不是在application.js中,而是在单独的.js文件中,然后通过我认为的require树从application.js调用。
答案 0 :(得分:1)
这是因为Turbolinks ajax如果链接错误,那么ready
事件只会在首页加载时触发。
您可以使用$(document).on "page:change", ->
代替$(document).ready ->
Turbolinks将点击处理程序附加到页面上的所有内容。如果您的浏览器支持PushState,Turbolinks将为页面发出Ajax请求,解析响应,并用响应替换整个页面。然后它将使用PushState将URL更改为正确的URL,保留刷新语义并为您提供漂亮的URL
参考:http://guides.rubyonrails.org/working_with_javascript_in_rails.html