Select i automatyczne ustawianie selected

Mam modele

[code]class Menu < ActiveRecord::Base
has_many :menu_items
end

class MenuItem < ActiveRecord::Base
belongs_to :menu
end[/code]
MenuItem ma m.in. kolumne active typu boolean. Mam kontroler do obsługi menu i elementów menu. Jedną z akcji jest:

def edit_item @menu = Menu.find(params[:menu_id]) @menu_item = @menu.menu_items.find(params[:id]) end
I w odpowiednim widoku (a konkretnie partialu) mam: [code]

False True [/code] I za nic nie chce mi automatycznie wybrać odpowiedniej wartości.

Dla kolumny name typu string robi co trzeba (w partialu mam text_field :menu_item, ‘name’).

Kombinowałem z<% select %> ale bezskutecznie.

Jak to zrobić, żeby wybierała się odpowiednia wartość?

Proponowałbym się zapoznać z atrybutem selected. :wink: W jakimś kursie html’a poszukaj i zastanów się co musisz dopisać do tych opcji. Albo w API railsów o generowaniu select poczytaj. :slight_smile:

No właśnie kombonuję i nie chce działać. Np taki kod:

select 'menu_item', 'active', %w{ true false }, :selected => @menu_item.active

w ogóle nie generuje atrubutu selected, a jak linijkę niżej dam <%= @menu_item.active %> to wyświetla tekst 'true’albo ‘false’.
Jeśli dam :selected => ‘true’ - to atrybut selected się generuje… - wygląda to tak, jakby @menu_item.active nic nie zwracało - ale przecież zwraca, bo tekst sie wyświetla.

Problem rozwiązany - trzeba dopisać to_s: :selected => @menu_item.active.to_s

Proponuję dodanie ? po active.

:selected => @menu_item.active?

Samo active zwraca dokładnie to co jest zapisane w bazie. Dodanie ? powoduje zwrócenie true lub false, czyli konwersję wartości z bazy na prawdziwy boolean.