我有一個這樣的數組:Rails的 - 從字符串數組下拉
['New York', 'Los Angeles']
而且我希望能夠產生與這些值的形式這樣的選擇/選項:
<%= form_tag filter_city_path, :method=> get do %>
<%= select_tag "city", @list_of_cities %>
<% end %>
但是這不起作用。正如你所看到的,我想通過URL爲城市。
我有一個這樣的數組:Rails的 - 從字符串數組下拉
['New York', 'Los Angeles']
而且我希望能夠產生與這些值的形式這樣的選擇/選項:
<%= form_tag filter_city_path, :method=> get do %>
<%= select_tag "city", @list_of_cities %>
<% end %>
但是這不起作用。正如你所看到的,我想通過URL爲城市。
您需要使用options_for_select幫手像
<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %>
我的方法是在模型中將數組構建爲常量,並強制確認常量中列出的選項,然後從中調用它視圖
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) %>
如果你想預揀(這是沒有意義的爲期一週的日子...)
只要有可能,嘗試以編程方式轉換您的數組,而不是將它們拼寫出來。你已經說明了爲什麼不在第二次使用「約克」時。 'cities.collect {| c | [c,c]}會做擴大它的工作。 – tadman 2012-04-24 03:01:44