ruby-on-rails-4 – Rails 4 simple_form和jQuery UI. Datepicker不通过turbolinks工作

我有这个表单调用datepicker:
...
<%= f.input :expiration_date,as: :datepicker,required: false %>
...

Simple_form包装:
应用程序/输入/ datepicker_input.rb

class DatepickerInput < SimpleForm::Inputs::Base
  def input
    @builder.text_field(attribute_name,input_html_options) + \
    @builder.hidden_field(attribute_name,{ :class => attribute_name.to_s + "-alt"})
  end
end

页面从头($(document).ready事件)加载时,生成以下html:

<input class="datepicker optional form-control hasDatepicker" id="order_expiration_date" name="order[expiration_date]" type="text">

但是,当页面加载了turbolinks(从侧导航栏,“page:load”事件),渲染的HTML是以下内容

<input class="datepicker optional form-control" id="order_expiration_date" name="order[expiration_date]" type="text">

当然,我可以在.html.erb或application.js文件添加hasDatepicker类,但是我想知道是否可以使用Rails功能来实现它.

解决方法

我终于找到了一个合适的修复:

app / inputs / datepicker_input.rb保持不变,包装效果很好.

资产/ Java脚本/ application.js中

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap.js
//= require_tree .

$(document).on("page:load ready",function(){
    $("input.datepicker").datepicker();
});

因为:datepicker输入类型将“.datepicker”类添加到呈现的HTML中,只需将datepicker()绑定到该类的所有元素即可.它使用最少的代码来做到这一点.

指定“input.datepicker”很重要,因为“.datepicker”类被添加标签和输入标签.

turbolinks抛出一个页面:加载事件,所以我已经为这两种情况添加了处理程序 – 当页面加载了turbolinks,并从零开始加载(窗口刷新,链接保存在收藏夹等)

现在以下.html.erb按照我的预期呈现:

<%= f.input :expiration_date,required: false,:placeholder => 'Select date',input_html: {class: "form-control"},label: "Expiration date: " %>

输出

<div class="control-group datepicker optional order_expiration_date">
  <label class="datepicker optional control-label" for="order_expiration_date">Expiration date: </label>
  <div class="controls">
    <input class="datepicker optional form-control hasDatepicker" id="order_expiration_date" name="order[expiration_date]" placeholder="Select date" type="text">
    <input class="expiration_date-alt" id="order_expiration_date" name="order[expiration_date]" type="hidden">
  </div>
</div>

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...