2010-03-02 43 views
1

当您使用form_for(@model...)你可以这样做:Rails的FormTagHelper漏掉重要的选择和collection_select方法

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>') 

表单助手和FormOptionsHelper工作在一起形式包装的模型上,和他们有selectcollection_select,使生活更轻松。然而,对于普通的form_tag(没有模型),没有这样的FormOptionsTagHelper。 FormTagHelper有一个select_tag方法,但您必须手动输出这些浪费的选项。这似乎已经在某个地方得到了解决。

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

回答

1

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

您试过使用options_for_select

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