如何在Rails中为date_select设置今天的最长时间?

时间:2018-07-25 08:51:12

标签: ruby-on-rails ruby ruby-on-rails-5

我在哪里可以选择出生日期:

= form.date_select :date_of_birth, start_year: Date.current.year, end_year: Date.current.year - 333

我希望它具有今天的最长日期。 最大日期必须等于今天和最大月份。不仅是一年。

我尝试了“ min:Date.today”和“ max:Date.today”,但没有成功。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

好吧,基于我先前回答的负面观点,让我再解释一下。 Rails日期选择器呈现三个选择,一个选择为日,一个选择为月,一个选择为年。由于此问题是“固定的”,因此无法选择减少几天或几个月的时间。这将不再允许您选择有效日期。您唯一可以更改的是年份范围。您已经在示例代码中做到了这一点。

现在,回到您的用例。您想阻止某人将来输入日期吗?当然。您有三种选择:

  1. 仅通过模型验证和验证此服务器端 向用户显示错误消息:“出生日期应为 过去”。总是这样做!

以下是添加到1中的最佳选择:

  1. 通过JS提交捕获表单,检查提交日期和 如果日期无效,则显示错误
  2. 通过某种方式更改显示日期的方式 Datepicker插件。 jQuery UI有一些不错的选择: https://jqueryui.com/datepicker/。这个让你更好 配置允许的日期,因为它是在客户端编程的

希望这会有所帮助。

答案 1 :(得分:-2)

不要担心将来的日期。现在暂时忽略此类不良条目。最好向模型添加验证,以检查是否提交了date < Date.today。如果您确实希望进行前端/客户端验证,请查找JS / jQuery datepicker。这些更易于配置并支持直接的内联错误消息。