2012-04-24 19 views
11

我有一個這樣的數組:Rails的 - 從字符串數組下拉

['New York', 'Los Angeles'] 

而且我希望能夠產生與這些值的形式這樣的選擇/選項:

<%= form_tag filter_city_path, :method=> get do %> 
    <%= select_tag "city", @list_of_cities %> 
<% end %> 

但是這不起作用。正如你所看到的,我想通過URL爲城市

回答

15

您需要使用options_for_select幫手像

<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %> 
+7

只要有可能,嘗試以編程方式轉換您的數組,而不是將它們拼寫出來。你已經說明了爲什麼不在第二次使用「約克」時。 'cities.collect {| c | [c,c]}會做擴大它的工作。 – tadman 2012-04-24 03:01:44

0

它看起來像你的數組沒有足夠的參數。請參閱this guide

典型的選項需要以這種方式進行格式化:

[['Lisbon', 1], ['Madrid', 2], ...] 

注意價值12

0

我的方法是在模型中將數組構建爲常量,並強制確認常量中列出的選項,然後從中調用它視圖

class Show < ApplicationRecord 

    DAYS = [ "monday", "tuesday", "wednesday", "thursday","friday", "saturday","sunday"] 

    validates :day, inclusion: DAYS 

end 

如果你想如果沒有內容將提交該字段的選項,你就必須調用`allow_blank:真正的」在驗證爲好。一旦建立,你可以調用常量來填充表單視圖像這樣:

<%= select_tag "day", options_for_select(Show::DAYS) %> 

<%= select_tag "day", options_for_select(Show::DAYS.sort) %> 

如果你想預揀(這是沒有意義的爲期一週的日子...)