嵌套的白名单属性仍然是不允许的
Nested whitelisted attributes still unpermitted
我有三个模型:事件、event_user、event_users_day。
event 接受嵌套属性 event_user,它也接受 event_users_day 作为嵌套属性。
class Event < ActiveRecord::Base
has_many :event_users, :dependent => :destroy, :inverse_of => :event
accepts_nested_attributes_for :event_users, :allow_destroy => true
end
class EventUser < ActiveRecord::Base
belongs_to :event, :inverse_of => :event_users
has_many :event_users_days, :dependent => :delete_all
accepts_nested_attributes_for :event_users_days, :allow_destroy => true
end
class EventUsersDay < ActiveRecord::Base
belongs_to :event_users, inverse_of: :event_users_days
validates :event_users, :presence => true
end
简单的嵌套形式非常简单:
= simple_nested_form_for :event_users do |f|
= f.fields_for :event_users_days do |day|
= day.input :event_day_id, as: :check_boxes, collection: @daygroups
= f.submit :class => "btn btn-success"
在我的控制器 event_user 中 event_users_days 的属性被列入白名单:
@event_user = EventUser.new(params.permit(:event_id), params[:event_users].permit(:id, event_users_days_attributes: [:id, :event_day_id]))
但是当我保存它时,只有 EventUser 被保存,因为服务器告诉我不允许 event_users_days:
Unpermitted parameter: event_users_days
知道我做错了什么吗?
Unpermitted parameter
错误是字面意思,因此您的表单正在生成 event_users_days
参数而不是预期的 event_users_days_attributes
参数,Rails 正确地拒绝了该参数.
我已经很长时间没有使用 nested_form
,如果您使用的是 Rails 4,那么我不确定这将是最佳选择(而且没有必要),但即便如此,我认为问题在于您使用的是 :event_users
而不是 @event_users
- 但通常我建议切换到 simple_form
除非您使用的是旧的 Rails(如果你是,那么你应该在 SO 上提问时具体说明)。
我有三个模型:事件、event_user、event_users_day。
event 接受嵌套属性 event_user,它也接受 event_users_day 作为嵌套属性。
class Event < ActiveRecord::Base
has_many :event_users, :dependent => :destroy, :inverse_of => :event
accepts_nested_attributes_for :event_users, :allow_destroy => true
end
class EventUser < ActiveRecord::Base
belongs_to :event, :inverse_of => :event_users
has_many :event_users_days, :dependent => :delete_all
accepts_nested_attributes_for :event_users_days, :allow_destroy => true
end
class EventUsersDay < ActiveRecord::Base
belongs_to :event_users, inverse_of: :event_users_days
validates :event_users, :presence => true
end
简单的嵌套形式非常简单:
= simple_nested_form_for :event_users do |f|
= f.fields_for :event_users_days do |day|
= day.input :event_day_id, as: :check_boxes, collection: @daygroups
= f.submit :class => "btn btn-success"
在我的控制器 event_user 中 event_users_days 的属性被列入白名单:
@event_user = EventUser.new(params.permit(:event_id), params[:event_users].permit(:id, event_users_days_attributes: [:id, :event_day_id]))
但是当我保存它时,只有 EventUser 被保存,因为服务器告诉我不允许 event_users_days:
Unpermitted parameter: event_users_days
知道我做错了什么吗?
Unpermitted parameter
错误是字面意思,因此您的表单正在生成 event_users_days
参数而不是预期的 event_users_days_attributes
参数,Rails 正确地拒绝了该参数.
我已经很长时间没有使用 nested_form
,如果您使用的是 Rails 4,那么我不确定这将是最佳选择(而且没有必要),但即便如此,我认为问题在于您使用的是 :event_users
而不是 @event_users
- 但通常我建议切换到 simple_form
除非您使用的是旧的 Rails(如果你是,那么你应该在 SO 上提问时具体说明)。