【问题标题】:Ruby simple_form renders 3 fields for date inputRuby simple_form 为日期输入呈现 3 个字段
【发布时间】:2023-03-11 06:40:01
【问题描述】:

我正在使用 ruby​​ gem simple_form 来处理我网站周围的不同表单,并且想知道是否有一种方法可以组合/折叠默认呈现的日期输入:

= f.input :dob, label: "Date of Birth", as: :date, start_year: Time.now.year - 90, end_year: Time.now.year - 8, order: [:day, :month, :year]

此代码生成三个输入字段:日、月和年。但我真正想要的是为所有三个字段设置一个字段,因此输入可能看起来像“05/05/1980”。如何实现?

【问题讨论】:

    标签: ruby-on-rails ruby simple-form


    【解决方案1】:

    要使用 html5 日期字段,您可以执行以下操作:

    = f.input :dob, as: :string, input_html: {type: :date}
    

    【讨论】:

      【解决方案2】:

      你错误地传递了 :as 参数。 使用字符串类型将创建一个字段而不是 3 个字段。

      = f.input :dob, label: "Date of Birth", as: :string, start_year: Time.now.year - 90, end_year: Time.now.year - 8, order: [:day, :month, :year]
      

      【讨论】:

        【解决方案3】:

        最好的解决方案是使用 jquery datepicker。默认日期选择器返回此格式。并且您的简单表单输入应该是普通的文本字段。漂亮而简单的解决方案

        【讨论】:

        • 我不认为日期选择器对于生日会非常友好?在不使用 simple_form 的情况下,它会以正确的方式返回字段,而在技术上它仍然是日期输入。所以我认为在这种情况下这不是正确的解决方案。
        【解决方案4】:

        最好的解决方案是带有可选日期选择器的文本。

        查看此 Railscast http://railscasts.com/episodes/213-calendars

        【讨论】:

          【解决方案5】:

          使用 jquery datepicker 作为:

          = f.input :dob
          

          $(function() {
            $("input#id_of_dob_field").datepicker();
          });
          

          【讨论】:

            【解决方案6】:

            添加 html5: true 选项怎么样?会给你一个单一的领域。不过看起来有点搞笑。

            = f.input :dob, label: "Date of Birth", as: :date, start_year: Time.now.year - 90, end_year: Time.now.year - 8, order: [:day, :month, :year], html5: true
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-10-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-14
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多