Problemy początkującego (form_for itd)

Witam,
jestem bardzo początkujący w railsach, ale za to zadanie postawiłem sobie ambitne :wink: Jeśli chodzi o moją wiedzę to przeczytałem parę ebooków, próbowałem to i tamto, ale nic tak nie przynosi efektów jak postawienie sobie jakiegoś zadania i próba dojścia do niego samemu. Niestety tym razem chyba poległem albo moja cierpliwość się skończyła. Problem za pewne jest banalny, ale już nie mam pomysłu jak to ugryźć.
Tworzę prostą aplikację, mam model User (użyłem Authlogic do autentyfikacji) i mam prosty model Role(id, name)
user.rb
class User < ActiveRecord::Base
acts_as_authentic
belongs_to :role
has_many :todos
end
role.rb
class Role < ActiveRecord::Base
has_many :users
end

Chciałbym umożliwić przy edytowaniu użytkownika możliwość przypisania mu roli za pomocą wybrania z listy, ale póki co problem mam nawet z pobraniem samej zmiennej do formularza.
edit.html.erb wygląda standardowo
<% form_for @user do |f| %>
<%= f.error_messages %>

<%= f.label :username %>
<%= f.text_field :username %>

ITD

<%= f.submit "Submit" %>

<% end %>

I moje pytanie brzmi, jak pobrać do text_field’a wartość user.role.name?
Samo <%= @user.role.name%> poza formularzem wyświetla prawidłową wartość, natomiast nie potrafię zmusić text_fielda żeby ją pokazał…
Zdaje sobie sprawę że problem może być banalny, ale proszę o jakąś radę :slight_smile:

Musisz użyć którejś z metod do wypełniania selecta:



W Twoim wypadku możesz na przykład:

# @roles możesz pobrać w kontrolerze <%= f.select(:role_id, @roles.collect {|r| [ r.name, r.id ] }, { :include_blank => true }) %>
Przekazujesz do selecta wszystkie role, a wybrana zostaje ta, która jest przypisana do usera (dzięki temu, że value w htmlowych options to będzie role.id).
Powinno zadziałać.

Na początku Twój kod zwrócił błąd, ale wpadłem na to że w user_controller źle określiłem @role
Teraz działa wyśmienicie :slight_smile: dzięki!