【问题标题】:date picker does not show in Rails unless refresh除非刷新,否则日期选择器不会显示在 Rails 中
【发布时间】:2015-01-09 17:52:20
【问题描述】:

我将日期选择器放在 Rails (v4.1.8) 中的一个表单中。我使用 eyecon datepicker(禁用过去的日期)。 http://www.eyecon.ro/bootstrap-datepicker/

  <div class="form-group">
    <label for="expiration" class="col-sm-2 control-label">
      Expiration
    </label>
    <div class="col-sm-10">
      <input type="text" class="span2 form-control" name="expiration" id="dpd1" data-date-format="yyyy-mm-dd">
    </div>
  </div>

如果我被定向到此页面,当我单击日期表单时,日期选择器不会显示。但是,如果我通过 chrome 中的 control+r 刷新页面。日期选择器运行良好。 或者,如果我在 url 栏中手动输入地址并回车,日期选择器也可以工作。

这太奇怪了。谁能给我解释一下?

另一个事实可能会有所帮助:如果我将代码保存为 html 而不是使用 Rails。它工作正常。

谢谢

【问题讨论】:

  • 您在项目中使用turbolinks 吗?你应该看看turbolinks 做了什么。
  • 提供的代码无助于调试此问题。有网站链接吗?

标签: javascript ruby-on-rails datepicker


【解决方案1】:

去过那里数百万次 - 这是因为turbolinksturbolinks gem 让您的网站更快 - 当您单击任何导航链接时,它不会重新加载整个页面,而只会重新加载其中要更改的部分(这是对它的功能的极大简化,请阅读 here 了解更多详细信息)

自然地,您的 javascript 不会被 turbolinks 跟踪,因此在加载新内容时不会执行它,从而使您的所有元素都没有任何挂钩或功能,而您通常没有 turbolinks。刷新页面时,会加载整个页面并执行所有 javascript,因此一切都按预期工作。

我通常通过定义一个辅助方法来处理它:

window.onInit = function(handler) {
  $(document).on('ready page:change', handler)
}

然后包装所有要为其中的每个页面运行的javascript:

onInit(function() {
  $('#dpd1').datepicker();
}):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多