Я делаю приложение для автопарка. Когда я хочу создать новый маршрут, у меня появляется эта ошибка:
ActiveModel::MassAssignmentSecurity::Error in RoutesController#create
Can't mass-assign protected attributes: place_ids
Модели выглядят так:
class Route < ActiveRecord::Base
# id :integer not null, primary key
# start_place_id :integer
# end_place_id :integer
# start_time :datetime
# end_time :datetime
# car_id :integer
belongs_to :car
has_many :places
has_and_belongs_to_many :users
attr_accessible :start_place_id, :end_place_id, :start_time, :end_time, :car_id
end
class Place < ActiveRecord::Base
has_many :routes
attr_accessible :name, :address, :lat, :long, :description
end
class Car < ActiveRecord::Base
has_many :routes
attr_accessible :car_type, :license_plate, :seats_num, :motorway_vignette_expeier
end
_form.html.erb из Маршрутов выглядит следующим образом:
<%= simple_form_for @route do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= f.association :places %>
<%= f.association :places %>
<%= f.input :start_time %>
<%= f.input :end_time %>
<%= f.association :car %>
<%= f.button :submit %>
<% end %>
Журнал пишет:
Started POST "/routes" for 127.0.0.1 at 2012-03-23 15:41:37 +0100
Processing by RoutesController#create as HTML
Parameters: {"utf8"=>"✓", "route"=>{"place_ids"=>["", "4", "", "1"], "start_time(1i)"=>"2012", "start_time(2i)"=>"3", "start_time(3i)"=>"23", "start_time(4i)"=>"14", "start_time(5i)"=>"41", "end_time(1i)"=>"2012", "end_time(2i)"=>"3", "end_time(3i)"=>"23", "end_time(4i)"=>"14", "end_time(5i)"=>"41", "car_id"=>"1"}, "commit"=>"Create Route"}
Completed 500 Internal Server Error in 1ms
ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: place_ids):
app/controllers/routes_controller.rb:15:in `new'
app/controllers/routes_controller.rb:15:in `create'
Я не понимаю, почему он создает массив из 4 элементов для place_ids ("place_ids" => ["", "4", "", "1"],).
И я не понимаю, почему пишут MassAssignment, когда я писал в модели attr_accessible ...
Я сделал подобное в рельсах 3.0.0, и это сработало. Я думаю, что simple_form изменил что-то ...
Почему он пишет place_ids? Почему бы не start_place_id и end_place_id?
Я загрузил полный проект на github: https://github.com/Koli14/telekocsi2
Окружающая среда:
ruby 1.9.2p290
Рельсы 3.2.1
simple_form (2.0.1)
Ubuntu 11.10