时间:2010-07-25 13:40:34

标签: jquery ruby-on-rails jquery-ui jquery-ui-datepicker

7 个答案:

答案 0 :(得分:17)

我已经构建了一个gem来处理这个问题:

https://github.com/albertopq/jquery_datepicker

希望它可以帮助别人。

答案 1 :(得分:16)

答案 2 :(得分:5)

截至目前,我建议jquery-ui-rails gem高于其他答案,原因很简单,你可以只包含datepicker资产而不需要整个jquery ui库!

https://github.com/joliss/jquery-ui-rails

答案 3 :(得分:4)

我使用albertopq提到的albertopq的jquery_datepicker,它适用于常规表单,嵌套属性等。这让我很容易。 jquery_datepicker也正确地将选项传递给datepicker必要的javascript调用。

以下是我的一个嵌套表单中的示例:

<%= f.datepicker 'availability', :minDate => 0, :maxDate => "+8Y", :tab_index => autotab %>

minDate和maxDate传递给datepicker,tab_index被放入文本字​​段html。 (autotab只是我的表单助手,可以推进标签+ 1 ...对我来说比硬编码更好。)

答案 4 :(得分:2)

Rails 5.x更新

步骤1.安装jquery-ui-rails gem

# gemfile
gem 'jquery-ui-rails'

# app/assets/javascripts/application.js
//= require jquery-ui/widgets/datepicker

# app/assets/stylesheets/application.css
*= require jquery-ui/datepicker

步骤2.假设您有一个名为Event的资源,其日期或日期时间字段名为:start,则在表单中将:start字段设为文本字段。

# app/views/events/_form.html.erb
<%= f.label :start, 'Start Date' %>
<%= f.text_field :start %>

步骤3.添加Javascript(在此处使用CoffeeScript语法)。 Line1)如果你启用了Turbolinks(Turbolinks通过加载AJAX来点击链接时加速Rails页面加载)你需要添加一个包装器,或者从内部链接导航到页面时不会加载JavaScript函数。

Line2)您正在定位表单中的元素ID。 Rails通过组合模型名称和字段名称自动为表单输入分配id。

Line3)您需要设置dateFormat,因为jQuery-UI和Rails使用不同的默认日期格式。

# app/assets/javascripts/event.coffee
$(document).on 'turbolinks:load', ->
  $('#event_start').datepicker
    dateFormat: 'yy-mm-dd'

对于Rails 4,除了JavaScript(或Cof​​feeScript)文件中的第一行外,一切都是相同的。在Rails 4中启用Turbolinks时加载JavaScript的包装器是:

$(document).on "page:change", ->

答案 5 :(得分:1)

答案 6 :(得分:1)

可能有点晚了,但我使用了一个简单的宝石:

的Gemfile: gem 'jquery-ui-rails'

的application.js: //= require jquery-ui

Application.css *= require jquery-ui

然后: Bundle install

资料来源: https://github.com/joliss/jquery-ui-rails