ActiveModel::UnknownAttributeError求助:Order无order_itens_attributes属性
搞定ActiveModel::UnknownAttributeError: unknown attribute 'order_itens_attributes' for Order.
嘿,这个问题我之前也碰到过,核心原因其实很明确,咱们一步步来解决:
1. 你的Order模型没开启嵌套属性支持
你现在的Order模型只定义了和order_itens的关联,但Rails默认不会自动处理嵌套的属性参数——也就是你请求里的order_itens_attributes。必须显式告诉Rails:“我要允许通过Order来创建/更新关联的OrderIten记录”,这就得靠accepts_nested_attributes_for方法。
2. 顺便检查下拼写(可选但建议)
另外注意到你的模型命名是OrderIten(是Iten不是标准的Item),对应的关联是has_many :order_itens——如果这是你故意的命名规则没问题,但如果是手滑打错了,建议统一改成OrderItem和order_items,不然以后维护的时候容易搞混。
改完后的代码参考:
更新后的Order模型:
class Order < ApplicationRecord belongs_to :user belongs_to :subsidiarie, optional: true has_many :order_itens # 关键就是加这一行!启用嵌套属性处理 accepts_nested_attributes_for :order_itens end
控制器的order_params(如果需要给OrderIten传product_id,可以加上):
def order_params params.require(:order).permit( :user_id, :subsidiarie_id, :amount, :start_time, :arrive_time, :delivered_time, :cancel_time, # 要是需要关联商品,就把:product_id也加进去 order_itens_attributes: [:quantity, :product_id] ) end
这样改完之后,你的POST请求就能正常识别order_itens_attributes参数,自动创建对应的OrderIten记录啦。
内容的提问来源于stack exchange,提问作者Javier Joasimar Palos Flores
相关产品推荐
相关产品推荐

