[code=‘ruby’]class Firm < ActiveRecord::Base
has_many :workers
end
class Worker < ActiveRecord::Base
belongs_to :firm
end[/code]
i niestety przy tworzeniu nowego pracownika dla danej firmy otrzymuję błąd, że nie może znaleźć firmy bez id… Co powinienem zrobić aby to działało ? szukałem już w necie ale nic nie mogę znaleźć co by mi pomogło. Pewnie większość tutoriali które czytałem są już nieaktualne i może też dla tego nie potrafię sobie z tym poradzić.
znalazłem coś takiego map.resources :firms, :has_many => :workers ale coś nie tak z tym map jest bo wywala błąd
undefined local variable or method `map’ for #ActionDispatch::Routing::Mapper:0x7b2e6c8
def new @firm = Firm.find(params[:firm_id]) @worker = @firm.workers.build
end[/code]
[/quote]
Nie obrazisz się chyba jak spytam czy na pewno w parametrach przekazujesz :firm_id ?
W bazie danych dla tabeli workers mam kolumnę firm_id, robię wszystko tak jak jest na tej stronie http://www.apohllo.pl/guides/getting_started.html w punkcie 8, z jedną małą różnicą, link do tworzenia nowych pracowników mam w widoku firms/index.html.erb, jednak to przekazywanie parametru firm_id coś nie działa. Dodatkowo wywala mi błąd, że nie ma metody new_firm_worker_path(@firm), pewnie w railsach 3 już jest inaczej
def new @firm = Firm.find(params[:firm_id]) @worker = @firm.workers.build
end
def create @firm = Firm.find(params[:firm_id]) @worker = @firm.workers.build(params[:worker]) @worker.save
end
def destroy
end
end[/code]
[code=ruby]Zad2::Application.routes.draw do
resources :firms do
resources :workers
end
root :to => “firms#index”
end[/code]
Też masz w widokach namieszane:
wywal z public index.html
w plik index firm wywal naglowki html, body itp, masz to w layout
w linku do Usuń masz błąd, robisz tam petle więc z firm wywal @ z linku
To chyba tyle po tych poprawkach u mnie poszlo
Ten główny błąd był po tym, że w kontrolerze miałeś Firm.find(params[:id]), a to kontroler nie firm a Wokrek wiec id z linku dotyczy workera, a nie firmy, musisz tam dac firm_id, a nie id
u mnie ciągle wywala No route matches {:controller=>“workers”, :action=>“new”} sprawdziłeś czy po dodaniu jakiejś firmy ciągle działa ? bo to się wysypuje przez tą linię <%= link_to ‘Dodaj pracownika’, new_firm_worker_path(@firm) %> a póki nie ma żadnej firmy to ten kod tak jakby nie istnieje