[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. 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.
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.
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.