使用form_for(@model...)
时可以执行此操作:
collection_select(:subscription, :duration, ["Some", "Values"], :to_s, :to_s, {:prompt => true})
输出是这样的:
<select id="subscription_duration" name="subscription[duration]">
<option value="">Please select</option>
<option value="Some">Some</option>
<option value="Values">Values</option>
</select>
如果您使用没有模型的表单,那么您没有那个好帮手方法来为您创建<option>
标签。相反,你必须这样做:
select_tag("subscription", '<option value="Some">Some</option><option value="Values">Values</option>')
FormHelper和FormOptionsHelper在包装模型的表单上协同工作,他们拥有select
和collection_select
,让生活更轻松。但是,对于普通form_tag
(没有模型),没有这样的FormOptionsTagHelper。 FormTagHelper有select_tag
方法,但您必须手动写出浪费的选项。似乎已经在某处修复了这个问题。
我可以编写自己的帮助器来摆脱手动编写这些选项标签,但那就是FormOptionsHelper#collection_select
所做的......对于没有模型的表单,是否存在等价物?
答案 0 :(得分:1)
选择和 collection_select 。我通常使用两个重要单词的组合,并选择一对数组[label,value]。唯一的缺点是必须使用格式abc [xyz]。
您尝试使用options_for_select?
select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")