Если вы проверяете coed из простой формы здесь , вы увидите, что на самом деле делает ассоциация метода.
def association(association, options = {}, &block)
# ... simple form code here ...
attribute = build_association_attribute(reflection, association, options)
input(attribute, options.merge(reflection: reflection))
end
Нас интересует build_association_attribute
вызов метода. здесь
def build_association_attribute(reflection, association, options)
case reflection.macro
when :belongs_to
(reflection.respond_to?(:options) && reflection.options[:foreign_key]) || :"#{reflection.name}_id"
# ... the rest of code ...
end
end
Ваша модель велосипеда заказа имеет ассоциацию belongs_to :bike
.Поэтому, когда вы вызываете order_bike.association :bike
, он создает атрибут :bike_id
в вашей форме.Если вы проверите params
хеш, который приходит к вашему контроллеру, я думаю, вы увидите, что этот атрибут исходит из вашего представления.
Я добавил bike_id
к разрешенным параметрам.Я надеюсь, что это решит вашу проблему ..
def order_params
params.require(:order).permit(:arrival, :departure,
order_bikes_attributes: [:id, :bike_id, :bike_quantity, :_destroy,
bikes_attributes: [:id, :name,
bike_types_attributes: [:id, :name]]])
end