2017-08-08 39 views
0

我正在用Ruby on Rails 5编写个人族谱应用程序,并使用:date数据类型输入出生/死亡日期。这会导致日期的每个元素(年/月/日)的下拉菜单。在这一年,菜单默认的范围为过去五年(未来五年)(对于2017年,范围从2012年到2022年)。但我需要有一个更大的范围来覆盖几个世纪以来的几年。如何在下拉菜单中定义我想要的特定年限范围?在Rails 5中使用:date数据类型时,如何扩展下拉菜单中可用年数的范围?

下面是从我schema.rb文件的摘录(删除等领域为简洁起见):

create_table "people", force: :cascade do |t| 
    t.date "birth_date" 
    t.date "death_date" 
end 

下面是从我的观点文件摘录(再次,删除等领域为简洁起见):

<div class="booyah-box col-10 offset-1"> 

    <h1>Edit Your Person Details</h1> 
    <%= simple_form_for @person do |f| %> 

    <%= f.input :birth_date %> 
    <%= f.input :death_date %> 

    <%= f.submit 'Update', class: 'btn btn-primary' %> 
    <% end %> 

</div> 

我还要补充我需要一种方法来有一个“别无选择”型选项,比如对于那些仍然生活,因为他们不会有

我已经搜查StackOverflo死亡日期w并没有找到适用的答案,但是如果这里已经有一个答案,请指向我。在此先感谢您的帮助。

+0

您是如何创建当前下拉菜单的?你能显示你的代码吗? – Gerry

+0

我是新来的stackoverflow,所以我不知道如何在评论中添加代码,所以它很好地格式化... –

+0

将它们添加到问题,而不是;你可以点击**编辑**添加更多信息。 – Gerry

回答

1

您可以在您的视图中指定日期input中的start_yearend_year;例如:

<div class="booyah-box col-10 offset-1"> 

    <h1>Edit Your Person Details</h1> 
    <%= simple_form_for @person do |f| %> 

    <%= f.input :birth_date, start_year: Time.now.year - 10, end_year: Time.now.year + 10 %> 
    <%= f.input :death_date, start_year: Time.now.year - 10, end_year: Time.now.year + 10, prompt: "-" %> 

    <%= f.submit 'Update', class: 'btn btn-primary' %> 
    <% end %> 

</div> 

在这个例子中,我添加从当前日起10年和当前的日期后的10年,但你可以使用任何你需要的范围内。

+0

谢谢,那有效。而且我可以将开始/结束年份设置为绝对值(如1700)。你知道一个简单的方法来允许“无选择”类型的选项,所以我可以离开死亡日期空白? –

+0

@elbereth是的,您可以为'start_year'和/或'end_year'使用绝对值。此外,您可以添加*“无选择”*选项,但它将被添加到所有字段,即年,月和日;做它只需添加属性',提示:“ - ”'。检查一个例子的更新答案(我在'death_date'上添加了它)。 – Gerry

+0

请注意,我在'prompt'中使用'' - “',但是您可以使用任何字符串作为消息显示空白选项。 – Gerry

相关问题