Rails相当于Django的"选择"

jea*_*las 9 html-select ruby-on-rails

我知道在Rails中没有真正的等价物,但我的问题主要是关于最佳实践......

在Django中,如果您想将模型字段限制为一组有限的选择,您可以执行以下操作(在您的模型中):

COLOR_CHOICES = (('B', 'Blue'), ('R', 'Red'))
item_color = models.CharField(choices=COLOR_CHOICES)
Run Code Online (Sandbox Code Playgroud)

根据我对Rails的基本理解,我可以实现类似的功能,例如,在表单中使用select标签来处理添加/编辑该模型...

然而我的问题是,在哪里声明"选择"哈希是合适的(我再次猜测哈希是我需要的?).基本上我只是希望它可以轻松地以任何形式重复使用,我可能需要提供这些选择,以及在模型级别进行验证时.

任何帮助/提示将不胜感激!

kru*_*.ar 10

在验证方面,可能validates_inclusion_of就是您所需要的:

class Coffee < ActiveRecord::Base
  validates_inclusion_of :size, :in => %w(small medium large),
    :message => "%{value} is not a valid size"
end
Run Code Online (Sandbox Code Playgroud)

至于生成帮助程序,您可以尝试以下方法:

class Coffee < ActiveRecord::Base
  @@coffe_size = %w(small medium large)

  validates_inclusion_of :size, :in => @@coffe_size,
    :message => "%{value} is not a valid size"

   def self.coffee_size_options
       @@coffe_size.map{ |z| [z,z]} 
   end
end
Run Code Online (Sandbox Code Playgroud)

然后在一些帮手:

<%= select(:coffee, :size, Coffee.coffee_size_options) %>
Run Code Online (Sandbox Code Playgroud)