Thread View: pl.comp.lang.ruby
7 messages
7 total messages
Started by Shaman
Thu, 15 Feb 2007 13:09
RoR [newbie] scaffolding i relacje
Author: Shaman
Date: Thu, 15 Feb 2007 13:09
Date: Thu, 15 Feb 2007 13:09
35 lines
1704 bytes
1704 bytes
Witam - przechodzę trudne początki z RoR :) Tutorial z "Agile Web Development.." poszedł łatwo, ale przy próbie zrobienia czegoś samodzielnie, trafił mi sie problem szybciej niż się tego spodziewałem. Otóż chciałbym aby scaffold obsłużył mi prostą relację i zamiast identyfikatora wyswietlała się wartość słownikowa z innej tabeli. Czy scaffold coś takiego umożliwia? Prosty przykład: create table pracownik( id int, nazwisko varchar(100), zawod_id int, constraint fk_prac_zawod foreign key (zawod_id) references zawod(id), primary key (id) ); create table zawod ( id int, nazwa varchar(100), primary key (id) ); Edytując lub dodając pracownika chciałbym wybrać zawód z listy lub pola combo.. obojętnie z czego, byle by wybierać nazwę a nie id. Nie żądam zbyt wiele od scaffold? :) PZDR Shaman
Re: RoR [newbie] scaffolding i relacje
Author: archiwista
Date: Thu, 15 Feb 2007 14:49
Date: Thu, 15 Feb 2007 14:49
46 lines
1940 bytes
1940 bytes
> Prosty przykład:
>
> create table pracownik(
> id int,
> nazwisko varchar(100),
> zawod_id int,
>
> constraint fk_prac_zawod foreign key (zawod_id) references zawod(id),
>
> primary key (id)
> );
>
> create table zawod (
> id int,
> nazwa varchar(100),
>
> primary key (id)
> );
>
> Edytując lub dodając pracownika chciałbym wybrać zawód z listy lub pola
> combo.. obojętnie z czego, byle by wybierać nazwę a nie id. Nie żądam
zbyt
> wiele od scaffold? :)
>
scaffold ci tego nie zrobi, jeżeli w modelach odpowiednio wpisałeś relacje
miedzy pracownik a zawód, powinno być
w modelu zawod
belongs_to :pracownik
w modelu pracownik
has_many :zawod
a potem jeżeli chcesz select_taga dla zawod dla pracownika, zmieniasz w
_form pracownika metodę dla zawod_id
np.
<% select_tag('zawod_id', options_for_select([['wybierz jeden']] +
@zawod.collect { |z| [z.nazwa, z.id]}, @pracownik.zawod.id)) %>
w controllerze pracownika w edit i w new w pisz
@zawod => Zawod.find(:all)
Re: RoR [newbie] scaffolding i relacje
Author: archiwista
Date: Thu, 15 Feb 2007 14:58
Date: Thu, 15 Feb 2007 14:58
7 lines
1173 bytes
1173 bytes
Użytkownik "archiwista" zapomiałem dodać, żebyś przy kreacji tabeli zawod zminił nazwę na zawody, potem odpowiednio dał znać o tym rubyemu w environment.rb, żeby rozróżniał między zawod a zawody, potem odpowiednio dodał -y w modelu, contollerze i view
Re: RoR [newbie] scaffolding i relacje
Author: Shaman
Date: Thu, 15 Feb 2007 16:29
Date: Thu, 15 Feb 2007 16:29
19 lines
1618 bytes
1618 bytes
Użytkownik "archiwista" <nie@ma.com> napisał w wiadomości news:er1sfb$ohm$1@inews.gazeta.pl... > > zapomiałem dodać, żebyś przy kreacji tabeli zawod zminił nazwę na zawody, > potem odpowiednio dał znać o tym rubyemu w environment.rb, żeby rozróżniał > między zawod a zawody, potem odpowiednio dodał -y w modelu, contollerze i > view podejrzewałem że scaffold tego nie załatwi, ale tez nie miałem pojęcia jak to ugryźć :) co do konwencji nazewniczej - trzymam sie nazw anglojęzycznych więc problemy z polskimi wyjątkami nie mam :) w każdym razie wielkie dzięki - spróbuję to teraz wcielić w życie PZDR Shaman
Re: RoR [newbie] scaffolding i relacje
Author: archiwista
Date: Thu, 15 Feb 2007 17:05
Date: Thu, 15 Feb 2007 17:05
20 lines
1423 bytes
1423 bytes
tak powinno zadziałać:
w modelu zawod
belongs_to :pracownik
w modelu pracownik
has_many :zawody (professions)
a potem jeżeli chcesz select_taga dla zawod dla pracownika, zmieniasz w
_form pracownika metodę dla zawod_id
np.
<% select_tag('zawod_id', options_for_select([['wybierz jeden']] +
@zawody.collect { |z| [z.nazwa, z.id]}, @pracownik.zawod.id)) %>
w controllerze pracownika w edit i w new w pisz
@zawody => Zawod.find(:all)
Re: RoR [newbie] scaffolding i relacje
Author: Shaman
Date: Fri, 16 Feb 2007 10:31
Date: Fri, 16 Feb 2007 10:31
12 lines
1357 bytes
1357 bytes
Użytkownik "archiwista" <nie@ma.com> napisał w wiadomości news:er23tj$of0$1@inews.gazeta.pl... > has_many i belongs_to oczywiście zrobiem - inaczej nie miałbym prawa > spodziwać się po scaffold czegokolwiek :) ale całośc wydaje mi sie jeszcze zagmatwana - może przejdę sobie tutor z Agile raz jeszcze dzięki za pomoc PZDR Shaman
Re: RoR [newbie] scaffolding i relacje
Author: archiwista
Date: Fri, 16 Feb 2007 12:50
Date: Fri, 16 Feb 2007 12:50
9 lines
1354 bytes
1354 bytes
Użytkownik "Shaman" podstawa do relacji, to wcześniej dobrze stowrzone i ponazywane tabele w bazie, potem to już górki, nie da się chyba łatwiej okreslać relacji niż robi to ror, poszukaj w sieci tutoriali wstępnych do rubyego i w każdym coś o tym znajdziesz, bo to jest punkt wyjścia do dalszej zabawy pozd.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads