Rails FormTagHelper缺少重要的select和collection_select方法

时间:2010-03-02 04:16:01

标签: ruby-on-rails form-helpers

使用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在包装模型表单上协同工作,他们拥有selectcollection_select,让生活更轻松。但是,对于普通form_tag(没有模型),没有这样的FormOptionsTagHelper。 FormTagHelperselect_tag方法,但您必须手动写出浪费的选项。似乎已经在某处修复了这个问题。

我可以编写自己的帮助器来摆脱手动编写这些选项标签,但那就是FormOptionsHelper#collection_select所做的......对于没有模型的表单,是否存在等价物?

1 个答案:

答案 0 :(得分:1)

无需模型即可调用

选择 collection_select 。我通常使用两个重要单词的组合,并选择一对数组[label,value]。唯一的缺点是必须使用格式abc [xyz]。

您尝试使用options_for_select

select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")