2010-12-29 11 views

Odpowiedz

12
<%= select_tag(:services, 
       Service.all.collect { |c| [c.id, c.name] }. 
       insert(0, "Select a Service"))%> 

Jak odpowiedział na pytanie, to jest dla Rails 2.3. W przypadku Rails 3, patrz odpowiedź Prathana Thananarta.

139

Większość czasu, nie chcesz dołączyć coś do tablicy bezpośrednio; jeden z nich jest czystsze rozwiązanie:

  • Zastosowanie :prompt => "Placeholder" jeśli chcesz zastępczy, aby pokazać się tylko wtedy, gdy atrybut nie występuje w czasie, gdy formularz jest renderowane. Zostanie ona wybrana domyślnie, ale nic nie zostanie zapisane, jeśli użytkownik ją prześle. Jeśli atrybut jest już wypełniony [prawdopodobnie dlatego, że a) istnieje wartość domyślna lub b) jest to formularz edycji], element zastępczy zostanie całkowicie pominięty na liście.
  • Użyj :include_blank => "Placeholder", jeśli chcesz dołączyć symbol zastępczy do wyświetlanej listy przez cały czas.
+0

Całkowicie się zgadzam. Zaznaczona odpowiedź działa, ale jest bardzo hackowana. Jest to wbudowana opcja do robienia tego, co chcesz. EDYCJA: Tylko zobaczyłem, że oryginalna odpowiedź była dla 2.3. Mimo to chciałbym połączyć obie odpowiedzi. –

+3

': prompt' nie działa dla mnie – Uko

+0

Jeśli to zrobisz: include_blank: true -it wstawi pusty pusty. – mjnissim