【问题标题】:Rails - format date_fieldRails - 格式 date_field
【发布时间】:2016-04-28 22:31:02
【问题描述】:

如何设置 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:

&lt;input class="form-control" type="date" name="vehicle[matriculation_date]" id="vehicle_matriculation_date"&gt;

日期字段接受以下格式的输入: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 进行样式设置。

【问题讨论】:

  • 也许这可能会有所帮助:stackoverflow.com/questions/1449955/…。请注意保存值的优缺点。
  • 如果这是它接受哪个输入的问题,我想这与浏览器区域设置以及该区域设置的标准日期表示法有关。这个 SO 帖子似乎重新强化了这个 stackoverflow.com/questions/3496241/…
  • 好吧,我也是这么想的,这就是为什么我尝试编辑 it.yml 文件,但我没有成功

标签: ruby-on-rails forms date


【解决方案1】:

你可以这样做:

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

【讨论】:

    【解决方案2】:

    你可以用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


    编辑:

    阅读您的评论和屏幕截图后,我得到了如下解决方案。

    你也可以使用这个 gem: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>
    

    【讨论】:

    • 我的代码中没有这样的变量,你能添加更多信息吗?我不想为日期设置样式,我想在表单中设置 date_field 输入的样式。谢谢!
    • @davideghz 我在检查您的评论和屏幕截图后编辑了我的答案。希望它能解决您的问题。
    • 嗨 Dharmesh,非常感谢。无论如何,日期选择器只是跳过问题并没有将其解决到根目录。我删除了我上次谈到 datepicker 的编辑,因为我认为它可能会产生误导。 date_field 的原始问题仍然存在:)
    【解决方案3】:

    你可以试试这个

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

    这行得通!

    【讨论】:

    • 我的代码中没有这样的变量,你能添加更多信息吗?我不想为日期设置样式,我想在表单中设置 date_field 输入的样式。谢谢!
    【解决方案4】:

    我的回答基于@Dharmesh_Rupani 的回答

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

    我在表单上做了两个小改动

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

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

    我更改的另一件事是我使用:class 代替:id,因为您可能有多个日期字段

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 2014-09-27
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 2016-10-03
      相关资源
      最近更新 更多