除非刷新,否则日期选择器不会显示在Rails中

时间:2015-01-09 17:52:20

标签: javascript ruby-on-rails datepicker

我把日期选择器放在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 + r在chrome中刷新页面。日期选择器运作良好。 或者,如果我手动输入url栏中的地址并按Enter键,日期选择器也可以。

太奇怪了。有人可以向我解释一下吗?

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

由于

1 个答案:

答案 0 :(得分:1)

有数百万的时间 - 这是因为turbolinksturbolinks gem使您的网站更快 - 当您点击任何导航链接时,它不会重新加载整个页面,而只会更改它的那些要更改的部分(它的功能大大简化,读取here了解详情)

当然,你的javascript不会被turbolinks跟踪,因此在加载新内容时不会执行它,所有元素都没有任何钩子或功能,通常没有turbolinks。当你刷新页面时,整个页面都被加载,所有的javascript都被执行,所以所有的工作都按预期工作。

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

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

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

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