如何更新控制器参数以接受带有Rails的嵌套属性?

时间:2019-06-10 09:47:38

标签: ruby ruby-on-rails-3

我正在使用Rails应用程序,我想知道如何更新控制器参数以接受带有Rails的嵌套属性,这是现有的控制器;

class Product < ApplicationRecord

  accepts_nested_attributes_for :product_shop_shipping_options, reject_if: proc { |attributes| attributes['shipping_option_id'].blank? }

 def product_params
    params.require(:product).permit(
      :sku, :name, :shipping_option_id, :product_region_id
    )
  end

我想知道是否需要添加其他属性,是否可以使用控制器中的create或update方法来实现?

1 个答案:

答案 0 :(得分:2)

class Product < ActiveRecord::Base
  has_many :variants
  accepts_nested_attributes_for :image
end

添加accepts_nested_attributes_for,后跟关联模型的名称。就我而言,它的形象。

在控制器中,您必须添加以下代码:

def product_params
  params.require(:product).permit(
   :name, :price,
   image_attributes: [ :id, :url, :alt, :caption ]
 )
end

根据您的情况,它将变为

def product_params 
    params.require(:product).permit( :sku, :name, 
    product_shop_shipping_options_attributes [ :shipping_option_id, 
   :product_region_id] )
end