我的控制器代码:
def description
product = @products.find(params(:id))
end
这是在控制器中,我必须将产品变量传递给description.html.erb
. 我怎样才能做到这一点?
它给了我一个ArgumentError
in StoreController#description
。
我的控制器代码:
def description
product = @products.find(params(:id))
end
这是在控制器中,我必须将产品变量传递给description.html.erb
. 我怎样才能做到这一点?
它给了我一个ArgumentError
in StoreController#description
。
一般来说,控制器中的变量传递给视图的方式是将它们分配为实例变量,这些变量是@
在它之前定义的变量,例如@products
. 如果要product
传递变量,则必须将其设置为@product
,如下所示:
@product = @products.find ...
在这种特殊情况下,您甚至会在调用视图之前收到错误消息。你的控制器动作中唯一的一行就是抛出这个。
确保@products
实际设置。它没有在#description
方法中设置,所以它是在此处设置的before_filter
吗?@products
能打电话吗#find
?在 Rails 中,我们经常只看到调用此方法的模型,例如Product.find(params[:id])
.
此外,我看到您正在使用params
常规括号而不是方括号访问您的哈希。在 Ruby 中,您使用方括号。仅此一项可能就是导致错误的原因。尝试将其更改为:
@product = @products.find(params[:id])
您可以使用将变量从控制器传递到视图@
控制器中的示例:
@my_var = 'toto'
在视野中
<%= @my_var %>