我的产品控制器如下所示:
class ProductsController < InheritedResources::Base
public
def product_params(p=params)
p.require(:product).permit(:manufacturer, :part_no, :avatar)
end
end
Item
与产品有一对一的关系。在Item
的控制器(activeadmin)中,我正在这样做:
@item.product = Product.create(ProductsController.product_params(params[:item]))
得到了这个错误:
undefined method `product_params' for ProductsController:Class
现在请帮我弄清楚我做错了什么。
答案 0 :(得分:3)
product_params
是类ProductsController
你在类product_params
上调用ProductsController
,并且这样不存在,product_params
不是类方法,它是实例对象方法,它只能在{的实例对象上调用{1}}
答案 1 :(得分:1)
您的控制器实施product_params
为实例方法,而非静态类方法。
我们有两种方法可以解决它:
products_params
声明为静态类方法。produtcs_params
当前实例。第一个选项:
def self.product_params(p=params)
p.require(:product).permit(:manufacturer, :part_no, :avatar)
end
第二个选项:
@item.product = Product.create(product_params(params[:item]))