【问题标题】:How can I generate input[type=date] with simple_form?如何使用 simple_form 生成 input[type=date]?
【发布时间】:2015-03-16 11:11:28
【问题描述】:
当我执行f.input :start_date, as: :date 时,我会得到 3 个选择元素(日、月和年)。
我可以通过f.input :start_date, as: :string 获取input[type=text] 元素,但是如何使用simple_form 生成input[type=date] 元素?
【问题讨论】:
标签:
ruby-on-rails
ruby-on-rails-4
simple-form
【解决方案1】:
您应该指定html5 选项:
f.input :start_date, as: :date, html5: true
Here 是详细信息。
【解决方案2】:
默认情况下,简单表单不会生成 HTML 5 日期/时间输入,因此使用日期、时间或日期时间都将使用普通的 Rails 助手生成选择框。我们相信浏览器还没有完全准备好这些,但您可以通过传递 html5 选项轻松地在每个输入的基础上选择加入:
<%= f.input :expires_at, as: :date, html5: true %>
希望simple_form documentation 中的这条信息能解决您的问题。
【解决方案3】:
您还可以将其设置为默认值,定义一个使其成为默认值的类:
# Use html5 date inputs by default, use html5: false to force
# the use of multiple selects
class DateTimeInput < SimpleForm::Inputs::DateTimeInput
private
def use_html5_inputs?
input_options.fetch(:html5, true)
end
end