【问题标题】:Ruby on Rails unpermitted parameters with has many throughRuby on Rails 未经许可的参数有很多通过
【发布时间】:2013-10-06 08:00:14
【问题描述】:

我有订单和产品,还有一个名为 orders_products 的连接表,订单通过 order_products 有很多产品,并接受它的嵌套属性。

当我尝试保存时,它一直说未经许可的参数:order_product

参数

def order_params
    params.require(:order).permit(:id, :order_number, :customer_id, {order_products_attributes: [:id, :order, :product, :quantity ]}, {:product_ids => []})

end

订单模式

class Order < ActiveRecord::Base
    belongs_to :customer
    has_many :order_products, class_name: "OrderProduct"
    has_many :products, through: :order_products
    accepts_nested_attributes_for :order_products, :allow_destroy => true
end

订购产品型号

class OrderProduct < ActiveRecord::Base
    belongs_to :product
    belongs_to :order
end

订单控制器新操作

def new
    @order = Order.new
    @order.order_products.build
end

订购单

<%= simple_form_for @order do |f| %>
<%= f.input :order_number %>

<%= f.fields_for :order_product do |fa| %>
    <%= fa.input :product, collection: Product.all  %>
    <%= fa.input :quantity %>

    <% end %>

<%= f.association :customer, as: :select %>

<%= f.submit %>
<% end %>

参数哈希 - {"utf8"=>"√","authenticity_token"=>"yBrH91u0OHTSPnCFO/484Ff6CRtyRLSg5AKD1Lc33k4=", "order"=>{"order_number"=>"0121", "order_product"=>{"product"=>"4", "quantity"=>"5"}, "customer_id"=>"3"}, "commit"=>"创建订单"}

不允许的参数:order_product

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    你在这里缺少s

    <%= f.fields_for :order_products do |fa| %>
    

    【讨论】:

    • 好的,我现在添加了这个我得到了未经许可的参数:产品
    • 你的参数现在是什么样子的?
    • 也许product 需要关联? &lt;%= fa.association :product, as: :select, collection: Product.all %&gt;.
    • 你找到@user2829533 的解决方案了吗??
    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多