使用 simple_form 格式化日期输入
Posted
技术标签:
【中文标题】使用 simple_form 格式化日期输入【英文标题】:Formatting a date input using simple_form 【发布时间】:2013-11-14 16:18:36 【问题描述】:我的数据库中有一个date
类型字段。
这是我正在使用的视图代码:
# Using 'as: :string' to avoid those three dropdowns rails generates.
= f.input_field :start_date, as: :string, class: 'form-control datepicker'
保存日期时,我使用一个 jquery 插件,该插件显示日历并写入日期,例如:11/05/2013
。
但在编辑同一条记录时,输入会填充值2013-05-11
。
我怎样才能让它变得如此简单_form实际上尊重我在en.yml
中定义的日期格式?
【问题讨论】:
【参考方案1】:这是你需要的:
f.input :my_date,
:as => :string,
:input_html => :value => localize(f.object.my_date)
PS : 这是 google search 的第一个链接 :)
【讨论】:
还值得知道您可以指定本地化功能的格式,例如localize(f.object.my_date, format: :short)
也可以提供格式如:localize(f.object.my_date, format: "%-m/%d/%Y")
现在 this 是我谷歌搜索中的第一个链接。 :)
这不适用于 HTML5 日期字段,例如在移动 Safari 浏览器上。 HTML5 日期字段期望值采用 yyyy-mm-dd 格式。这个问题有解决办法吗?
@morgler, localize(f.object.my_date, format: "%yyy-%mm-%dd")【参考方案2】:
我创建了这个类,它可以很容易地做到这一点:
f.input :my_date, :as => :date_picker
将此类添加到您的 lib/ 文件夹并确保包含它(或将其配置为自动加载):
class DatePickerInput < SimpleForm::Inputs::StringInput
def input
value = @builder.object.send(attribute_name)
input_html_options[:value] = case value
when Date, Time, DateTime
format = options[:format] || :medium
value.to_s(format)
else
value.to_s
end
input_html_options[:class] ||= []
input_html_options[:class] << "date_picker_input"
@builder.text_field(attribute_name, input_html_options)
end
end
【讨论】:
以上是关于使用 simple_form 格式化日期输入的主要内容,如果未能解决你的问题,请参考以下文章
您如何使用 Bootstrap 5 和 simple_form 编写切换开关