Ruby on rails 在Rails erb文件中创建实例或局部变量?

Ruby on rails 在Rails erb文件中创建实例或局部变量?,ruby-on-rails,erb,Ruby On Rails,Erb,我有一些纯粹与UI相关的计算,如在以下示例中确定html/css类: 如果这是在erb模板而不是控制器中完成的,则在创建变量时首选控制器,class或@class 创建变量、类或@class时,首选哪个 无法创建名为class的变量,因为它是保留关键字。另一方面,@class是完全有效的 说到在视图文件中创建变量,这不是一个好建议。鼓励人们远离你可能有的任何逻辑的观点是很常见的 如果您急于这样做,那么只需使用三元运算符: score < 60 ? 'red' : 'green' 得分

我有一些纯粹与UI相关的计算,如在以下示例中确定html/css类:


如果这是在erb模板而不是控制器中完成的,则在创建变量时首选控制器,
class
@class

创建变量、类或@class时,首选哪个

无法创建名为
class
的变量,因为它是保留关键字。另一方面,
@class
是完全有效的

说到在视图文件中创建变量,这不是一个好建议。鼓励人们远离你可能有的任何逻辑的观点是很常见的

如果您急于这样做,那么只需使用三元运算符:

score < 60 ? 'red' : 'green'
得分<60?“红色“:“绿色”

如果局部变量足够,请使用局部变量

但是,除此之外,视图实际上从来都不是定义任何变量的好地方。为什么不改用helper呢?比如说:

def score_class(score)
  score < 60 ? 'red' : 'green'
end
def分数\等级(分数)
分数<60?“红色“:“绿色”
结束

通常不鼓励在视图中设置变量。视图有一个目的,即向用户呈现信息。因此,视图中的所有代码都应该是用户所看到内容的模板。这种决定应该在助手中做出(正如一个答案所建议的),这样视图就可以隐藏逻辑并只调用该方法。如果计算值将被多次使用,是否有一种方法可以“缓存”该值,从而使助手方法不需要被多次调用?寻找“记忆化”或者低级别缓存@wlnirvana.My不适合随机选择的示例