在Rails 3中,我应该如何管理选择有限的模型列

jkl*_*ina 9 ruby-on-rails ruby-on-rails-3 drop-down-menu

在我的Rails 3应用程序中,我有许多模型,其列具有有限的选择(IE是选择框).在这些情况下,为了管理选择而创建另一个模型和与原始模型的关系似乎有些过分.

我能想到的一个选择是只创建一个选择框并在那里有选择,但这似乎不是很干.有没有人有一个很好的建议如何处理这种情况?

谢谢你的期待.

Jim*_*mmy 14

您可以像这样在模型中创建常量

# formatted as an array of options, option being an array of key, value
OPTIONS = [['Email', 'email'], ['Text', 'text'], ['Email and Text', 'both']]

validates_inclusion_of :field, :in => OPTIONS
Run Code Online (Sandbox Code Playgroud)

然后可以使用它来非常轻松地填充视图中的选择菜单

使用formtastic的例子

<%= f.input :field, :as => :select, :collection => Model::OPTIONS %>
Run Code Online (Sandbox Code Playgroud)

  • 啊,你需要将数组折叠成只有`OPTIONS.collect {| o |的值 o [1]}` (3认同)

Aus*_*lor 7

我通常在模型中使用常量列表来执行此操作.

class Model < ActiveRecord::Base
  PROPERTY_OPTIONS = ['Option One', 'Option Two', ...]
  validates_inclusion_of :property, :in => PROPERTY_OPTIONS
end
Run Code Online (Sandbox Code Playgroud)

在视图中:

<%= f.select :property, Model::PROPERTY_OPTIONS %>
Run Code Online (Sandbox Code Playgroud)