Ruby on Rails中的@variables
@title
和title
什么区别? 由于它们都可以是variables名称。 另外,如何决定我应该使用哪种types的variables? 用@
还是不行?
title
是一个局部variables。 它们只存在于其范围内(当前块)
@title
是一个实例variables – 可用于类中的所有方法。
你可以在这里阅读更多: http : //strugglingwithruby.blogspot.dk/2010/03/variables.html
在Ruby on Rails中 – 在控制器中声明你的variables作为实例variables( @title
)使它们可用于你的视图。
区别在于variables的范围。 @version可用于类实例的所有方法。
简短的回答,如果你在控制器,你需要使variables可用的视图,然后使用@variable
。
对于更长的答案试试这个: http : //www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
当你希望variables在视图中可用时,在控制器中使用@title
。
解释是@title
是一个实例variables, title
是一个局部variables,而rails使控制器的实例variables可用于视图。 发生这种情况是因为模板代码(erb,haml等)在当前控制器实例的范围内执行。
@variable
variabless在ruby中被称为实例variables。 这意味着你可以在类的任何方法中访问这些variables。 [在课堂上的所有方法]
不带@
符号的variables称为局部variables,这意味着您只能在THAT DECLARED METHOD中访问这些局部variables。 局限于当地范围。
实例variables示例:
class Customer def initialize(id, name, addr) @cust_id = id @cust_name = name @cust_addr = addr end def display_details puts "Customer id #{@cust_id}" puts "Customer name #{@cust_name}" puts "Customer address #{@cust_addr}" end end
在上面的例子中@cust_id
, @cust_name
, @cust_addr
在类中的另一个方法中访问。 但是同样的东西不能用局部variables访问。
局部variables只能从初始化的块中访问。 另外一个局部variables以小写字母(az)或下划线(_)开头。
而实例variables是self
一个实例,并以@
开始。另外一个实例variables属于对象本身。 实例variables是你在.send
等执行方法的variables
例:
@user = User.all
@user
是实例variables
未初始化的实例variables的值为Nil
@variables是实例variables,而不是局部variables。
阅读http://ruby.about.com/od/variables/a/Instance-Variables.htm