访问另一个控制器方法时出现未定义方法错误
undefined method error while accessing another controllers method
我的产品控制器是这样的:
class ProductsController < InheritedResources::Base
public
def product_params(p=params)
p.require(:product).permit(:manufacturer, :part_no, :avatar)
end
end
Item
与产品是一对一的关系。在 Item
的控制器(activeadmin)中 cI 正在这样做:
@item.product = Product.create(ProductsController.product_params(params[:item]))
并收到此错误:
undefined method `product_params' for ProductsController:Class
现在请帮我找出我做错了什么。
product_params
是 class ProductsController
的实例对象方法
您在 class ProductsController
上调用 product_params
,而这样的不存在,product_params
不是 class 方法,它是实例对象方法,它只能在 ProductsController
的实例对象上调用
你的控制器实现 product_params
作为 实例方法 ,不像 static class 方法 .
我们有两种修复方法:
- 将
products_params
声明为静态 class 方法。
- 调用
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]))
我的产品控制器是这样的:
class ProductsController < InheritedResources::Base
public
def product_params(p=params)
p.require(:product).permit(:manufacturer, :part_no, :avatar)
end
end
Item
与产品是一对一的关系。在 Item
的控制器(activeadmin)中 cI 正在这样做:
@item.product = Product.create(ProductsController.product_params(params[:item]))
并收到此错误:
undefined method `product_params' for ProductsController:Class
现在请帮我找出我做错了什么。
product_params
是 class ProductsController
您在 class ProductsController
上调用 product_params
,而这样的不存在,product_params
不是 class 方法,它是实例对象方法,它只能在 ProductsController
你的控制器实现 product_params
作为 实例方法 ,不像 static class 方法 .
我们有两种修复方法:
- 将
products_params
声明为静态 class 方法。 - 调用
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]))