0

我的控制器代码:

def description  
   product = @products.find(params(:id))  
end

这是在控制器中,我必须将产品变量传递给description.html.erb. 我怎样才能做到这一点?

它给了我一个ArgumentErrorin StoreController#description

4

2 回答 2

0

一般来说,控制器中的变量传递给视图的方式是将它们分配为实例变量,这些变量是@在它之前定义的变量,例如@products. 如果要product传递变量,则必须将其设置为@product,如下所示:

@product = @products.find ...

在这种特殊情况下,您甚至会在调用视图之前收到错误消息。你的控制器动作中唯一的一行就是抛出这个。

确保@products实际设置。它没有在#description方法中设置,所以它是在此处设置的before_filter吗?@products能打电话吗#find?在 Rails 中,我们经常只看到调用此方法的模型,例如Product.find(params[:id]).

此外,我看到您正在使用params常规括号而不是方括号访问您的哈希。在 Ruby 中,您使用方括号。仅此一项可能就是导致错误的原因。尝试将其更改为:

@product = @products.find(params[:id])
于 2013-03-22T16:29:07.430 回答
0

您可以使用将变量从控制器传递到视图@

控制器中的示例:

@my_var = 'toto'

在视野中

<%= @my_var %>
于 2013-03-22T16:23:13.713 回答