2017-08-02 57 views
1

我正在建立一个网站,用户必须输入他们的一些信息。其中一条信息是他们的大学专业。我不希望他们把它输出(我有一个很好的理由,为什么它不能输出)。所以在形式,当我有这样三种选择,我这样做:如何实现数百个选项的下拉菜单?

<%= f.input :option, collection: ["option 1", "option 2", "option 3"], required: true, label: 'Options' %> 

我能做的专业上面的方法为好,但它会弄乱代码。由于我想包含超过150个专业,有没有不同的简单方法可以做到这一点,而不会混淆视图的代码?

回答

3

最简单的方法是使用常数。创建constants.rb文件中的配置/初始化和地方有这样的事情:

MAJORS = ["option 1", 
      "option 2"] 

然后,在视图中选择调用是这样的:

<%= f.input :option, collection: MAJORS, required: true, label: 'Options' %> 

你也可以考虑做MAJORS一个模型,将所有字段存储在数据库中。另外,从列表中提取可能是一个问题,请考虑使用typeahead宝石,以方便用户。

+1

感谢您的回答。我想我可能会使用constants.rb方法 – LizzyTheLearner

+0

全局常量永远不是一个好主意,而constants.rb可能会鼓励这一点。应该有一个模型,主要是常量应该适合像学生模型或其他东西。把它放在那里。 –