我遇到编辑嵌套属性的问题。我收到此错误:
no implicit conversion of Symbol into Integer
event.rb:
Class Event < ActiveRecord::Base
has_many :event_joins, :dependent => :destroy
accepts_nested_attributes_for :event_joins
end
events_controller.rb:
private
def event_params
params.require(:event).permit(event_joins_attributes: [:duration])
end
_form.html.erb:
=f.fields_for :event_joins_attributes do |a|
=number_field_tag 'event[event_joins_attributes][duration]'
end
如果我在使用
之前更改我的params
params[:event][:event_joins_attributes][:duration] = params[:event][:event_joins_attributes][:duration].to_i
我有以下错误:
no implicit conversion of String into Integer
我已经阅读了很多关于大量分配的嵌套属性的帖子,但没有任何作用。 以下是我读过的帖子的一部分。
strong-parameters-permit-all-attributes-for-nested-attributes
rails-4-strong-parameters-nested-objects
当然,我不想做
params.require(:event).permit!
答案 0 :(得分:4)
你必须改变这个
=f.fields_for :event_joins_attributes do |a|
=number_field_tag 'event[event_joins_attributes][duration]'
end
到
=f.fields_for :event_joins do |a|
=a.number_field :duration
end
这样您就可以保持event_params
不变。
注意事项:
也始终允许:id
中的event_params
更新 正常工作。
def event_params
params.require(:event).permit(:id, event_joins_attributes: [:id, :duration])
end