2010-03-08 7 views
5

Mam listę wartości (początkujący, średni, zaawansowany, Płynna, native), które chciałbym:stworzenie elastycznego, zlokalizowanych Ruby-on-Rails list-of-wartości

  • działać jako model na liście SELECT
  • akt jako model do konwersji identyfikatorów do wartości w tabeli HTML
  • zastosowanie w wielu kontrolerów i widoków
  • utrzymać w porządku, że zachowuje reguł biznesowych (sortowane według poziomu umiejętności)
  • zlokalizować w pewnym momencie w przyszłość

Czy istnieje sposób wprowadzenia tej listy w celu zaspokojenia wszystkich lub większości moich potrzeb?

Odpowiedz

9

można umieścić definicję tablicy w /config/locales/some_language.yml

na przykład można mieć następujące w en.yml

en: 
    experience_levels: 
      1: Beginner 
      2: Intermediate 
      3: Advanced 
      4: Fluent 
      4: Native 

aby dostać klucz wartość do pary pomocnika, następujące powinny działać:

def experience_levels 
    I18n.t(:experience_levels).map { |key, value| [ value, key ] } 
end 

Aby to wykorzystać w pole zaznaczania, byś po prostu umieścić w swoim form_for

<%= f.select :experience_levels, experience_levels %> 

Jeśli używasz form_tag zamiast potrzebne są następujące elementy:

<%= select_tag :experience_levels, options_for_select(experience_levels) %> 
+0

Dziękuję, dziękuję, dziękuję. Jakieś przemyślenia na temat dodawania zlokalizowanej opcji "Wybierz ..." na początku listy? Być może 0: Wybierz ...? – craig

+0

Możesz dodać element "Wybierz" do tablicy. Ale może lepiej byłoby mieć oddzielną wartość, która jest dodawana do helpera zanim zostanie wstawiona do znacznika select. W ten sposób możesz użyć go do wszystkich tagów select i mieć tylko jedno miejsce, w którym je zmienisz. – ajmurmann

+0

fajny przykład. to działa dla mnie. ale jak mogę odczytać wartość z tej tablicy w widoku szablonu? na przykład: chcę uzyskać "Początkujący", jeśli mam już numer 1 z db –

Powiązane problemy