Ruby simple_form为日期输入呈现3个字段

时间:2013-11-07 11:45:15

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

我在我的网站周围使用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”。怎么能实现呢?

6 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

你通过了:作为错误的参数。 使用字符串类型将创建一个字段而不是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]

答案 2 :(得分:1)

最好的解决方案是使用jquery datepicker。默认的datepicker返回此格式。并且您的简单表单输入应该是普通文本字段。非常简单的解决方案

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

使用jquery datepicker:

= f.input :dob

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

答案 5 :(得分:0)

如何添加html5:true选项?将给您一个字段。确实看起来有点可笑。

public getArrivalsReportSevenDayForecast(selectedDate1 : Date): Observable<ArrivalsReportSevenDayForecastModel[]> {
const params = new HttpParams();
const day = selectedDate1.getDate();
const month = selectedDate1.getMonth() + 1 // Remember this increment
const year = selectedDate1.getFullYear();

const data = this.svcHttp.get<ArrivalsReportSevenDayForecastModel[]>(this.routePrefix +
  `/arrivalreportsevendayforecast/${day}/${month}/${year}`, { params: params }).pipe(
  map<ArrivalsReportSevenDayForecastModel[], ArrivalsReportSevenDayForecastModel[]>(arrivingList => {
    // do mapping here if needed       
    return arrivingList;
  }),
  catchError((err) => this.svcError.handleError(err)));

return data;
}