1

您可以在使用时执行此操作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。 FormTagHelper有一个select_tag方法,但是你必须手动写出选项,这是一种浪费。似乎这已在某个地方修复。

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

4

1 回答 1

1

selectcollection_select可以在没有模型的情况下调用。我通常使用两个重要词的组合,以及一组对 [label, value] 进行选择。唯一的缺点是必须使用格式 abc[xyz]。

您尝试使用options_for_select吗?

select_tag 'Account', options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")
于 2010-03-02T12:31:18.383 回答