2011-08-04 211 views
2

嘿Rails新手在这里。Ruby:变量范围问题

我曾经有很多东西在我的控制器之一进行。有人告诉我,拥有“胖模型和瘦控制器”的好习惯所以我正在将一些东西转移到模型上。

在我的控制器的show方法中,我曾经在我的视图中使用了一些@变量。现在我的模型中有一个方法中有这些变量。在我看来,我仍能访问那些人吗?如果是这样,我必须做出任何调整?

感谢

回答

5

你将不得不在控制器作为@变量来创建模型的一个实例。然后,您可以从视图中调用方法。

例如想象你有一些一长串的逻辑在你的控制器,它计算的信用评分为客户在

@credit_score = credit_score 

达到高潮,现在你已经转移到这对Customer模型credit_score方法。

现在,您只需要

@customer = Customer.find... 

控制器

,您可以在视图中使用<%= @customer.credit_score %>

这就是人们通过胖模型和瘦控制器所表达的意思。如果您需要更多建议,最好从应用中更新一些具体问题。

0

通常的做法是定义在控制器这样的变量:

@object = Model.new 

到后来form_for或类似的东西使用它。相反,有些人直接在视图中使用Model.new。这有点不寻常,但仍然有意义,特别是要知道,Rails只是循环访问控制器中的所有实例变量,以使其在您的视图中可用