【问题标题】:How to set and get the default value in date_select rails如何在 date_select rails 中设置和获取默认值
【发布时间】:2016-04-11 10:10:54
【问题描述】:

所以我有一个包含年份开始和结束日期的编辑表单。我想将 db 存储的值显示为默认日期。

我试过了

 <%= f.input :year_start_date, :label => 'Year Start Date', :as => :date_select, :include_blank => false,
                      :input_html => { :id => 'y_start_date'}, prompt: { day: year_start_date.day, month: Date::MONTHNAMES[year_start_date.month], year: year_start_date.year}, data: year_start_date %>

所以它很好,并开始显示 db 存储的值。

但问题是当只更改月份时,参数将是

"year_start_date(1i)" => "",  "year_start_date(2i)" => "3",  "year_start_date(3i)" => ""

并且在控制器中正在做 [ school_params['year_start_date(1i)'], school_params['year_start_date(2i)'], school_params['year_start_date(3i)'] ].join('-').to_date

由于它包含空字符串,因此会引发无效日期错误。

当没有选择任何内容时,我想要默认值(在本例中为日期和年份)。如何做到这一点?

编辑 1:

参数

{
                "utf8" => "✓",
             "_method" => "patch",
  "authenticity_token" => "abcffdgfdgfgfgf==",
              "school" => {
                         "name" => "Test School",
                     "board_id" => "1",
    "board_registration_number" => "",
                    "subdomain" => "testschool",
                        "email" => "",
                      "website" => "",
                      "address" => "NA",
                         "city" => "NA",
                      "pincode" => "",
                   "country_id" => "1",
                "country_state" => "Tamil Nadu",
                        "phone" => "NA",
                     "inc_year" => "",
                   "handler_id" => "14451",
          "year_start_date(1i)" => "",
          "year_start_date(2i)" => "1",
          "year_start_date(3i)" => "",
            "year_end_date(1i)" => "",
            "year_end_date(2i)" => "",
            "year_end_date(3i)" => ""
  },
              "button" => "",
          "controller" => "sat/schools",
              "action" => "update",
                  "id" => "2"
}

【问题讨论】:

  • 这不是答案,这是一个建议:使用datepicker js 插件。
  • 转换成日期格式
  • @uzaif 正在使用 .to_date 转换为 date_format。即使我尝试使用 Date.new( school_params['year_start_date(1i)'].to_i, school_params['year_start_date(2i)'].to_i, school_params['year_start_date(3i)'].to_i ) 仍然得到同样的错误.
  • 您在表单提交时是否使用 raise params.inspect 签入控制器,您得到了什么日期格式?
  • 你能检查你的表单对象并在这里分享检查吗?

标签: ruby-on-rails activeadmin formtastic


【解决方案1】:

您可以简单地使用浏览器提供的日期选择器,而无需添加额外的库,而不是使用那种丑陋的日期/日期时间输入:

f.input :year_start_date, :label => 'Year Start Date', as: :string, input_html: { type: "date" }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-14
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多