2010-03-02 97 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")