选择标签&选择101的选项

时间:2013-12-01 14:16:06

标签: ruby-on-rails select model ruby-on-rails-4 form-helpers

有人可以解释一下这是如何起作用的吗?

问题:

我有一个脚手架并运行迁移:

rails g migration AddRarityToTags rarity:string

对于罕见输入,我需要一个下拉列表,显示可供选择的选项列表。

e.g. Rarity = Free
              Common
              Rare
              Epic

如果我是对的,我需要这样的东西:

  select_tag :rarity, options_for_select(@rarity)

我搜索了很多,但没有多大帮助,我更加困惑。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:2)

想象一下,将原始选项作为字符串放入标记中:

select_tag :rarity, '<option>Free</option><option>Common</option>...'

如果你传入一个数组,这就是options_for_select返回的内容:

select_tag :rarity, options_for_select(['Free', 'Common', ...])

请参阅:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select

要强制执行“哑视图”规则,并让其他人使用该数组,您可以将其移至模型:

class Tag < ActiveRecord::Base

  RARITY_LEVELS = %w(Free Common Rare Epic)

end

...

select_tag :rarity, options_for_select(Tag::RARITY_LEVELS)

我和OP都想知道Rails或者任何宝石是否让我们得到任何比这更干的东西;例如,如果Rails允许我们将RARITY_LEVELS直接附加到rarity字段...