Ruby on rails 日期选择器不显示日历

Ruby on rails 日期选择器不显示日历,ruby-on-rails,datepicker,turbolinks,Ruby On Rails,Datepicker,Turbolinks,在我的申请表中,我可以从日期选择器日历中选择一个日期。刷新页面时,单击表单时会出现datepicker日历。这是正确的行为 但是,当我使用链接从另一页访问同一页时,在单击表单后,日历不会显示。我必须刷新页面以使日历可见 这是我的表格页: # app/views/reservations/_form.html.erb ... <div class="row reservations"> <div class="span2 field">

在我的申请表中,我可以从日期选择器日历中选择一个日期。刷新页面时,单击表单时会出现datepicker日历。这是正确的行为

但是,当我使用链接从另一页访问同一页时,在单击表单后,日历不会显示。我必须刷新页面以使日历可见

这是我的表格页:

# 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>
...
和文件:

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'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 4.0.0.beta1'
  gem 'coffee-rails', '~> 4.0.0.beta1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', platforms: :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.0.1'

我也遇到了同样的问题。这是一个涡轮链路问题

您可以通过向href或div添加数据no turbolink来禁用源页面上的turbolinks,这将使其正常工作。i、 e

<%= link_to "Create New Form", sampleform_path, 'data-no-turbolink' => true %> 

我对Rails5和jQueryAutoComplete也有同样的问题。我的导航栏上有我的搜索框,每次我进入应用程序中的另一个页面时,我的elasticsearch自动完成功能都会中断,这并不是说会调出所有与我输入内容相关的用户。为了解决这个问题,我将它添加到了我的_nav.html.erb
。我在我的div里试过,就在搜索框附近,但是,这似乎不起作用,但是在导航中起作用了。根据Turbolinks页面:对于Turbolinks,这些事件将仅在响应初始页面加载时触发,而不是在任何后续页面更改后触发”

jQuery UI日期选择器小部件将一个共享元素附加到正文中,它期望该元素永远不会离开页面,但Turbolinks在重新提交时会删除该共享元素。我们通过在Turbolinks缓存页面之前从页面中删除共享元素,并在Turbolinks交换新正文之前再次附加该元素来满足这一期望在渲染期间

此外,返回以前包含日期选择器元素的页面的缓存版本会导致这些日期选择器无法再次初始化。我们通过在页面上查找所有初始化的日期选择器输入并在TurboLink缓存页面之前调用日期选择器的destroy方法来解决此问题

document.addEventListener "turbolinks:before-cache", ->
  $.datepicker.dpDiv.remove()

  for element in document.querySelectorAll("input.hasDatepicker")
    $(element).datepicker("destroy")

document.addEventListener "turbolinks:before-render", (event) ->
  $.datepicker.dpDiv.appendTo(event.data.newBody)

最简单的解决方案是使用链接中的
方法::get

<%= link_to "Create New Form", sampleform_path, method: :get %> 


听起来像是在DOM完全构建之前尝试绑定。在您的coffeescript上尝试$(document)。ready->。@Tuan
$->
$(document)的快捷方式。ready->
((示例))哦,谢谢,很高兴知道。谢谢,这两种解决方案在我的开发环境中都很好。但是,在我的生产环境中(我用Heroku),我仍然有这个问题。我的意思是我在使用coffeescript解决方案时遇到了问题。嗯。我也在使用heroku进行生产,我使用了coffeescript解决方案。它对我有效,而且我的项目设置与你的项目非常相似。我已经看到我的开发环境和产品环境在资产加载方式上存在一些差异,因此你可能需要我无法再次检查firebug以确保加载了正确的coffeescript文件。我想不出heroku和您的开发环境会有不同行为的另一个原因。事实上,我在资产方面遇到了一些问题。因此我从头开始了一个项目,现在一切都很好。感谢您的帮助。在包括
jquery turbolinks
gem
数据无turbolink
工作正常,其他解决方案不适用于所有情况,禁用页面中使用1个以上的查询插件更好,非常感谢xD。
document.addEventListener "turbolinks:before-cache", ->
  $.datepicker.dpDiv.remove()

  for element in document.querySelectorAll("input.hasDatepicker")
    $(element).datepicker("destroy")

document.addEventListener "turbolinks:before-render", (event) ->
  $.datepicker.dpDiv.appendTo(event.data.newBody)
<%= link_to "Create New Form", sampleform_path, method: :get %>