Ruby on rails RubyonRails-:符号、@iVars和;字符串";-天哪!
刚接触Rails,正在尝试了解何时/为什么在框架内使用Ruby on rails RubyonRails-:符号、@iVars和;字符串";-天哪!,ruby-on-rails,ruby,string,symbols,instance-variables,Ruby On Rails,Ruby,String,Symbols,Instance Variables,刚接触Rails,正在尝试了解何时/为什么在框架内使用:symbols,@ivars,“strings” 我想我从概念上理解了它们之间的区别 每个项目只有一个:symbol实例 每个实例一个@ivar 多个“字符串”-只要引用(?) 请随意纠正我 主要的困惑来自于对Rails期望的规则和约定的理解-在哪里以及为什么 我确信有一个“啊哈!”的时刻即将到来,但我还没有经历过……因为它对我来说似乎相当随意(来自C/Obj-C) -thx实例变量非常简单:它们跟踪特定实例的属性/值,因此当您在实例之
:symbols
,@ivars
,“strings”
我想我从概念上理解了它们之间的区别
- 每个项目只有一个
实例:symbol
- 每个实例一个
@ivar
- 多个
-只要引用(?)“字符串”
-thx实例变量非常简单:它们跟踪特定实例的属性/值,因此当您在实例之间更改值时,可以使用它们
符号与字符串的对比更为随意。符号通常用于常量值,与C语言使用枚举的方式大致相同;Ruby没有枚举,所以经常使用符号来填补这个空白。字符串用于不用作标志或类似常量的更多不同文本。实例变量
@instance\u>是一个实例变量。它通常在控制器中定义,并可在视图中访问
“string”
是一个字符串,与任何其他语言一样
:符号
,正如您所提到的,它是表示名称和字符串的有效方法;它们是文字值。它被初始化,在ruby会话期间只存在一次。它不是字符串,因为您无权访问字符串方法;这是一个象征。最重要的是,它是不可变的。由于这些原因,它在用哈希表示键时变得非常方便。Rails方法使用散列,因此,在Rails中到处都可以找到符号。实例变量实际上与字符串和符号不属于同一个列表。字符串和符号是类的类型,而实例变量是变量的类型。因此实例变量(@var
)只是一种在一个类的一个实例的方法之间存储值的方法:
class Calculator
@counter = 0
def inc
@counter += 1
end
def dec
@counter -= 1
end
end
是一篇关于符号和字符串之间区别的好文章。符号有点像指针(不是用C语言的方式,而是用C语言的思维方式,它们指向)。嗯,在处理属性时使用符号。如果你问我的话,它们是动态输入的最大好处之一。(对于潜在的选民,我并不想伤害他们,我知道他们不是指路人,但对我来说感觉‘啊哈!’
当您从模型中获取数据并且希望在视图中(在控制器方法中)使用它们时,需要实例变量
def my_controller_方法
@myposts=Post.find(:all)
结束
#内部视图
只是提醒一下,每个版本的规则和惯例都有很大的变化(正如我在Rails之旅中发现的那样)。使用正确的导轨和正确的导轨会有所帮助。祝你编码好运 Rails控制器通过ORM(对象关系映射)通过模型访问Rails数据库,即模型类将映射到其对应的表,对象直接映射到表中的行。为了获得给定用户查询的结果,实例变量(@instance_variable)是处理它的最佳选择。Ah,散列和:符号之间的关系有意义(+1)。我仍然看到字符串、符号和IVAR在某种程度上可以互换地传递给方法?!?也许在我完成这项工作时,模式会变得清晰…在freenode上加入#rubyonrails会有很大帮助,它确实帮助我更快地理解Rails。这个答案与这个问题有什么关系?
:action => "index"
def my_controller_method
@myposts = Post.find(:all)
end
# inside view
<% for @myposts do |m| %>
<i><%= m.title %></i>
<% end %>