Rails - 格式化date_field

时间:2016-04-28 22:31:03

标签: ruby-on-rails forms date

如何设置date_field的日期格式?

我得到以下表格:

<%= form_for([@user, @vehicle]) do |f| %>
    <%= f.label :name, "Vehicle name" %>
    <%= f.text_field :name, class: 'form-control' %>
    <%= f.label :matriculation_date %>
    <%= f.date_field :matriculation_date, class: 'form-control' %>
    <%= f.submit "Add", class: "btn btn-primary" %>
<% end %>

这是为日期字段呈现以下HTML:

<input class="form-control" type="date" name="vehicle[matriculation_date]" id="vehicle_matriculation_date">

日期字段接受以下格式的输入:mm/dd/yyyy。我希望它接受dd/mm/yyyy等格式。

我试图编辑it.yml文件而没有任何运气。

it:
  date:
      formats:
        default: ! '%d/%m/%Y'

  datetime:
      formats:
        default: ! '%d/%m/%Y %H:%M'

有任何线索吗?谢谢

修改

所提出的解决方案都没有解决我的问题,所以我认为我的问题不是很明确。我想要的只是设置date_field如何提示用户的样式(有关详细信息,请参阅图像)。目前,表单显示mm/dd/yyyy,我希望它显示dd/mm/yyyy

不确定它可能是一个有用的信息,但我正在使用Bootstrap进行样式化。

enter image description here

4 个答案:

答案 0 :(得分:4)

你可以这样做:

<%= f.date_field :matriculation_date, as: :date, value: f.object.try(:strftime,"%m/%d/%Y"), class: 'form-control' %>

答案 1 :(得分:1)

你可以试试这个

@yourdate.strftime("%m/%d/%Y")

这有效!

答案 2 :(得分:1)

您可以使用strftime()

转换日期格式
@date.strftime("%d/%m/%Y")

它会根据您的需要将您的日期转换为dd/mm/yyyy格式。 我在这里向您展示一个例子:

t = Time.now
=> 2016-04-28 16:09:42 -0700
>> t.strftime("%d/%m/%Y")
=> "28/04/2016"

了解更多strftime()格式选项,您可以查看http://apidock.com/ruby/DateTime/strftime

编辑:

阅读完评论和截图后,我得到了以下解决方案。

你也可以使用这个宝石:https://github.com/Nerian/bootstrap-datepicker-rails 在你的gemfile.rb上

gem 'bootstrap-datepicker-rails'

然后捆绑安装并重新启动rails服务器

然后将此行添加到 app / assets / stylesheets / application.css

*= require bootstrap-datepicker

并将此行添加到 app / assets / javascripts / application.js

//= require bootstrap-datepicker

并在表单中使用:

<%= f.date_field :matriculation_date, :id => "datepicker" %>

并在表单的同一视图中添加此javascript

<script>
$('#datepicker').datepicker({format: 'dd/mm/yyyy'});
</script>

答案 3 :(得分:0)

我的回答基于@Dharmesh_Rupani回答

按照步骤添加gem 'bootstrap-datepicker-rails'

我在表格上做了两处小改动

<%= f.text_field : matriculation_date, :placeholder => 'dd/mm/yyyy', class: 'form-control datepicker' %>

第一件事是我将字段的类型更改为文本,因为当我实现时,我有两个日历,一个来自date_field,另一个来自新宝石

我更改的另一件事是使用:id而不是:class,因为您可能会遇到多个日期字段

最后,你应该在视图上添加它

<script>
  $( document ).ready(function() {
    $('.datepicker').datepicker({format: 'dd/mm/yyyy'});
  });
</script>