Witam, mam dwa modele firms i categories przy tworzeniu firmy w formularzu użyłem nested object form aby móc przypisać kategorię dla danej firmy:
<% form_for(@firm) do |f| -%>
<% f.fields_for :categories do |category_form| %>
<%= category_form.label :kategoria %> <br />
<%= category_form.select(:id, Category.find(:all).collect{|c| [c.name, c.id]}) %> <br />
<% end %>
<% end %>
Model firm:
[code]class Firm < ActiveRecord::Base
has_and_belongs_to_many :categories, :join_table => “categories_firms”
accepts_nested_attributes_for :categories, :allow_destroy => true
end[/code]
Model category
class Category < ActiveRecord::Base
has_and_belongs_to_many :firms, :join_table => "categories_firms"
end
Controller firms_controller:
[code]def new
@firm = Firm.new
@firm.categories.build
end
def create
@firm = Firm.create(params[:firm])
@firm.save
if @firm.errors.empty?
redirect_to firms_url
flash[:notice] = “Firma #{@firm.name} została zapisana.”
else
render :action => ‘new’
end
end[/code]
Przy zapisie pojawia się kominikat:
[code]NoMethodError in FirmsController#create
undefined method `stringify_keys!’ for “0”:String
{“firm”=>{“name”=>"",
“city”=>"",
“phone_1”=>"",
“regon”=>"",
“worker_quantity”=>"",
“postal_code”=>"",
“phone_2”=>"",
“www_address”=>"",
“number_of_house”=>"",
“owner_surname”=>"",
“country”=>"",
“owner_name”=>"",
“number_of_house_2”=>"",
“description”=>"",
“street”=>"",
“fax”=>"",
“categories_attributes”=>{“0”=>{“id”=>“2”}},
“nip”=>"",
“state”=>"",
“email”=>""},
“commit”=>“Dodaj firmę”,
“authenticity_token”=>“KJixa+TflqORi7nSv+BjJngPcUCoWsgN0Hq0CbntSP0=”}[/code]
Proszę o pomoc. Sądze że to przyczyna select helpera ale nie mogę sobie z tym poradzić.