Jak tworzyć formularz dodawania rekordu z połączeniem do innego rekord

Witam. Jak najlepiej zrobić formularz dodawania rekordu który zawiera w sobie odwołanie do innego tabeli?

Np. Post jest przypisany do kategorii. Czy po prostu zrobić select “na chama”, czy może jednak jest jakiś łatwiejszy pół automatyczny sposób?

Możesz na przykład w kontrolerze:

@categories_for_select = Category.find(:all).map {|c| [c.name, c.id]}

w widoku (formularz):

<%= select 'post', 'category_id', @categories_for_select %>

Nie wiem czy o to Ci chodziło czy może o dodawanie za jednym razem kilku modeli po wysłaniu formularza ?

O coś podobnego mi chodziło. Tylko że dwa pytania:

  1. Jak mogę do listy options dodać własne pole np. – to jest kategoria nadrzędna – z jakimś ustalonym value (nie chodzi mi o pole blank które wiem jak dodać)
  2. Czy ten kod jest ustawiony na modyfikacje? Tj. czy przy edycji zaznaczy mi odpowiednią kategorie?

[quote=br-design.pl]O coś podobnego mi chodziło. Tylko że dwa pytania:

  1. Jak mogę do listy options dodać własne pole np. – to jest kategoria nadrzędna – z jakimś ustalonym value (nie chodzi mi o pole blank które wiem jak dodać)[/quote]
    @categories_for_select to tablica tablic: [[“Kategoria 1”,1][“Kategoria 2”,2]]
    Więc możesz w widoku do niej dodać kolejny element, np. tak:
<%= select 'post', 'category_id', ["Wybierz kategorię", 0] + @categories_for_select %>

Zaznaczy, bo korzystasz z helpera “select”, który tak jak inne mu podobne helpery wybiera zapisaną wartość i ją wyświetla/zaznacza.

Jest mały problem, zrobiłem tak jak napisałeś ale system wydaje się traktować @categories_for_select jako tablice jedno elementową, bo dodając przy helperze do niej element [“wybierz”, 0], wyświetla mi tak naprawdę dwa elementy option, jeden o value i wartości “wybierz”, a drugi o value i wartosci “0”.

Oops, chyba zabrakło mi klamr :slight_smile:

spróbuj z [[“Wybierz…”, 0]] + @categories_for_select

Dzięki! Zadziałało!