Witam.
Mam tak sytuację.
modele:
[code=“ruby”]class Employee < ActiveRecord::Base
has_many :employee_departments
has_many :departments, :through => :employee_departments
def employee_department_attributes=(employee_department_attributes)
employee_departments.build(attributes)
end
end
class EmployeeDepartment < ActiveRecord::Base
belongs_to :employee
belongs_to :department
end
class Department < ActiveRecord::Base
has_many :employee_departments
has_many :employees, :through => :employee_departments
end[/code]
Kontroler: employees, sądzę ze tu przy create jest problem, tylo nie wiem jaki.
[code=“ruby”] def new
@employee = Employee.new
@employee.employee_departments.build
respond_to do |format|
format.html
format.xml { render :xml => @employee }
end
end
def create
@employee = Employee.new(params[:employee])
respond_to do |format|
if @employee.save
flash[:notice] = 'Employee was successfully created.'
format.html { redirect_to(@employee) }
format.xml { render :xml => @employee, :status => :created, :location => @employee }
else
format.html { render :action => "new" }
format.xml { render :xml => @employee.errors, :status => :unprocessable_entity }
end
end
end[/code]
Widok: new
[code=“ruby”]<% form_for(@employee) do |f| %>
<%= f.error_messages %>
<%= f.label :surname %>
<%= f.text_field :surname %>
<%= f.label :forename %>
<%= f.text_field :forename %>
<%= f.label :employment_from %>
<%= f.date_select :employment_from, :order => [:day, :month, :year] %>
<%= f.label :employment_to %>
<%= f.date_select :employment_to, :order => [:day, :month, :year] %>
<%= employee_department_form.label :from %>
<%= employee_department_form.date_select :from %>
<% end %>
--
<% end %>
<%= f.submit "Create" %>
<% end %>[/code] Przy dodawaniu nowego pracownika dostję błąd: [b]undefined method `forename=' for #[/b]{“commit”=>“Create”,
“employee”=>{“forename”=>“Jan”,
“employment_from(2i)”=>“9”,
“employment_from(3i)”=>“19”,
“employee_department_attributes”=>{“from(1i)”=>“2008”,
“from(2i)”=>“9”,
“from(3i)”=>“19”},
“employment_to(1i)”=>“2008”,
“employment_to(2i)”=>“9”,
“employment_to(3i)”=>“19”,
“surname”=>“Kowalski”,
“employment_from(1i)”=>“2008”},
“authenticity_token”=>“9f967255d101f054e9de7e71ef5ca5336d2c56b4”}
Gdzie popełniłem błąd.
Przejżałem juz railscasty 73,74,75 ale tam jest kilka zadan do jednego projektu dodawanych. Zrobilem i dzialalo. Ja chcę dodac do pracownika jedna date w innym modelu. Są tez inne dane ale chyba nie ma to znaczenia. Bo nawet jedna data nie dziala.
Jak usune dodawanie tej daty i zostanie samo imie i nazwisko to jest ok.
Znalazlem tez podobne watki: http://railsforum.com/viewtopic.php?id=15562 i robilem wg wskazowe i nie dziala
Za wskazówki i rady dzieki.
Pozdrawiam