@title和title的区别是什么?因为它们都可以是变量名。另外,我如何决定我应该使用哪种变量?带@还是不带?
当前回答
@variables在ruby中被称为实例变量。这意味着您可以在类中的任何METHOD中访问这些变量。[类中的所有方法]
不带@符号的变量称为局部变量,这意味着您只能在THAT declarations METHOD中访问这些局部变量。仅限于本地范围。
实例变量示例:
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是在类中的另一个方法中访问的。但是同样的事情不能用局部变量来实现。
其他回答
@变量是实例变量,不为局部变量。
更多信息请访问http://ruby.about.com/od/variables/a/Instance-Variables.htm
区别在于变量的作用域。@version对类实例的所有方法都可用。
简单来说,如果你在控制器中,你需要让变量对视图可用,那么使用@variable。
想要更长的答案,试试这个:http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variables在ruby中被称为实例变量。这意味着您可以在类中的任何METHOD中访问这些变量。[类中的所有方法]
不带@符号的变量称为局部变量,这意味着您只能在THAT declarations METHOD中访问这些局部变量。仅限于本地范围。
实例变量示例:
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是在类中的另一个方法中访问的。但是同样的事情不能用局部变量来实现。
局部变量只能从它的初始化块内访问。此外,局部变量以小写字母(a-z)或下划线(_)开头。
实例变量是self的一个实例,以@开头。实例变量属于对象本身。实例变量是你执行方法的变量,例如。send等
例子:
@user = User.all
@user是实例变量
未初始化的实例变量的值为Nil
当你想让你的变量在视图中可用时,在控制器中使用@title。
说明@title是一个实例变量,而title是一个局部变量。Rails使得控制器中的实例变量对视图可用,因为模板代码(erb、haml等)是在当前控制器实例的范围内执行的。
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- 是否可以在MiniTest中运行单个测试?
- 如何在Ruby中生成a和b之间的随机数?
- ActiveRecord OR查询
- 无法安装gem -未能建立gem本地扩展-无法加载这样的文件——mkmf (LoadError)
- 如何在Ruby中创建文件
- 什么是Ruby文件。开放模式和选项?
- Ruby数组到字符串的转换
- 如何分割(块)一个Ruby数组成X元素的部分?
- Ruby中“or”和||的区别?
- 在Rails中使用user_id:integer vs user:references生成模型
- 如何测试参数是否存在在轨道
- 验证多个列的唯一性
- Rails:在where语句中使用大于/小于
- Rails:如何为Rails activerecord的模型中的属性创建默认值?