如何使用 simple_form 生成输入 [type=date]?

How can I generate input[type=date] with simple_form?

当我执行 f.input :start_date, as: :date 时,我得到 3 select 个元素(日、月和年)。

我可以做 f.input :start_date, as: :string 来获得 input[type=text] 元素,但是我如何用 simple_form 生成 input[type=date] 元素?

您应该指定 html5 选项:

f.input :start_date, as: :date, html5: true

Here是细节。

HTML 5 date / time inputs are not generated by Simple Form by default, so using date, time or datetime will all generate select boxes using normal Rails helpers. We believe browsers are not totally ready for these yet, but you can easily opt-in on a per-input basis by passing the html5 option:

<%= f.input :expires_at, as: :date, html5: true %>

希望 simple_form documentation 中的这条信息能解决您的问题。

您还可以将其设置为默认值,定义一个 class 使其成为默认值:

# 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