1

我有一个我一直在开发的 Rails 应用程序。我已经设置了用户、目录和产品。

用户有很多目录。目录有许多产品。

在 Products 控制器中,我正在尝试创建一个产品。这是我目前拥有的功能:

def create
  @product = @catalogue.products.build(params[:product])

  if @product.save
    flash[:success] = "Product created!"
    redirect_to @catalogue
  else
    flash[:error] = "Save error: Product not created."
    render 'static_pages/home'
  end
end

我有一个使用 before_filter 设置@catalogue 的函数:

  def get_catalogue 
    @catalogue = Catalogue.find_by_id(:catalogue_id)
  end

此功能似乎无法正常工作,因为我得到的错误是:

ProductsController#create 中的 NoMethodError

nil:NilClass 的未定义方法“产品”

我假设产品 catalogue_id 将在执行新操作后设置。

感谢您提前提供任何帮助。

4

2 回答 2

2

I think the problem is in the before_filter. I think it should use params[:catalogue_id] and not a symbol.

def get_catalogue 
  @catalogue = Catalogue.find_by_id(params[:catalogue_id])
end
于 2013-04-07T15:43:24.353 回答
2

为什么不使用嵌套路由?

资源:目录做

资源:产品

结尾

然后你可以使用

目录产品路径(@catalogue)

这将允许您在控制器中访问 params[:catalogue_id]。

于 2013-04-08T12:38:20.947 回答