2012-04-24 14 views
11

Mam tablicę takiego:Rails - spaść z tablicy ciągów

['New York', 'Los Angeles'] 

I chcę, aby być w stanie wygenerować wybierz opcję/z tymi wartościami w formie takiego:

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

Ale to nie działa. Jak widać, chcę podać w adresie URL wybór city.

Odpowiedz

15

Trzeba użyć options_for_select pomocnika jak

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

Gdy tylko jest to możliwe, spróbuj programowo przekształcić tablice, zamiast wypowiadać je z długiej ręki. Zilustrowałeś, dlaczego nie używasz słowa "york" w drugiej instancji. 'cities.collect {| c | [c, c]} "wykonałoby zadanie rozszerzenia. – tadman

0

Wygląda na to, że Twoja tablica nie ma wystarczającego argumentu. Proszę zapoznać się z this guide.

opcje zazwyczaj musi być sformatowany w ten sposób:

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

Należy wziąć pod uwagę wartość 1, 2 itp

0

Moją metodą jest zbudowanie tablicy jako stałej w modelu, potwierdzenie wymuszenia do opcji wymienionych w stałej i wywołanie go z widok

class Show < ApplicationRecord 

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

    validates :day, inclusion: DAYS 

end 

Jeśli chcesz opcja dla tej dziedzinie należy składać bez zawartości musisz zadzwonić `allow_blank: true” w ramach walidacji, jak również. Raz, że jest skonfigurowane można nazwać stałą zapełnić widoku w postaci jako tak:

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

lub

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

jeśli chcesz presorted (co nie ma sensu z dni tygodnia ...)

Powiązane problemy