Ruby:变量范围问题

时间:2011-08-04 19:36:44

标签: ruby-on-rails ruby variables scope models

嘿Rails新手在这里。

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

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

由于

2 个答案:

答案 0 :(得分:5)

您必须在控制器中创建模型的实例作为@变量。然后,您可以从视图内部调用方法。

e.g。想象一下,你曾经在你的控制器中有一些长长的逻辑来计算一个客户的信用评分,最终

@credit_score = credit_score

您现在已将其移至credit_score模型上的Customer方法。

你现在只需要

@customer = Customer.find...
控制器中的

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

这就是人们对脂肪模型和瘦控制器的意思。如果您想要更多建议,那么最好使用您应用中的一些细节来更新问题。

答案 1 :(得分:0)

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

@object = Model.new

以后在form_for中使用它或类似的东西。有些人会直接在视图中使用Model.new。这有点不寻常,但仍然有意义,特别是知道Rails每次都会循环遍历控制器中的所有实例变量,以使它们在您的视图中可用