Relacje między tabelami belongs_to, has_many

Kurcze, mam problem z takim banałem:

Dwie tabele: products która ma belongs_to :categories i categories która ma has_many :products. Udało mi się już wyświetlić w formularzu dodawania produktu pole select z zawartością z kategorii. Jednak przy dodawaniu nowego produktu nie wpisuje mi category_id do bazy w tabeli produktów. Nowy produkt dodaję tak:

[code] def product_create
@product = Product.new(params[:product])
if @product.save
flash[:notice] = ‘Nowy produkt dodany pomyślnie’
redirect_to :action => ‘product_list’
else
render :action => ‘product_new’
end
print :product
end

def product_new
@product = Product.new
@categories = Category.find(:all, :order => “name”).map {|u| [u.name, u.id]}
end[/code]
Mam też pytanie co daje |u| w przedostatniej linii? Zauważyłem że przy tworzeniu tabel daje sie |t| ale nie wiem nawet czego szukać o tych || żeby doczytać.

Z góry dzięki za pomoc.

EDIT

Już rozwiazałem. Wywaliłem linijkę zaczynajacą się od @categories w product_new i zmieniłem w _product_form.rhtml linijkę z polem kategorii na

<%= collection_select :product, :category_id, Category.find(:all), :id, :name %>

teraz walczę z wyświetlaniem kategorii na listach

Jeśli nie wiesz co to jest to musisz wziąć dobrą książkę o Rubym i nadrobić zaległości. To |u|, |t| to element sparametryzowanych bloków kodu (proc, lambda), które są podstawowym elementem języka (m.in. dzięki temu Ruby jest tak elastyczny). Nawet “zwykła” pętla opiera się na tym (metoda ‘each’). Poczytaj o tym bo inaczej będzie Ci ciężko cokolwiek napisać rozumiejąc w 100% o co chodzi.