需要将参数从控制器传递到.html.erb文件

时间:2013-03-22 16:19:46

标签: ruby-on-rails

我的控制器代码:

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

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

它在ArgumentError中给了我一个StoreController#description

2 个答案:

答案 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])