我的控制器代码:
def description
product = @products.find(params(:id))
end
这是在控制器中,我必须将产品变量传递给description.html.erb
。我怎么能这样做?
它在ArgumentError
中给了我一个StoreController#description
。
答案 0 :(得分:0)
您可以使用@
示例:
@my_var = 'toto'
在视图中
<%= @my_var %>
答案 1 :(得分: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])