我两个月前开始使用Rails,我仍然喜欢它,但是有一个巨大的问题。这是关于在轨形式中大量使用哈希的。
有很多方法可以做到这一点,我已经看到很多依赖于哈希的示例,但这始终是另一种语法。
有些人这样写
:foo => :bar
foo: :bar
"foo" => "bar"
我总是把它们混在一起,并得到很多语法错误,有人可以向我解释正确的方法吗?
这是一个符号:foo
,就像是"foo"
对的吗?
另外:如果我有一个form_tag(@something)
,为什么要访问html元素,为什么必须用方括号括起来?喜欢form_tag(@something, :html => {:foo => :bar})
有人可以解释吗?
谢谢
哈希火箭=>
是建立哈希的原始方法。在Ruby的更高版本中,对于键是符号的情况,他们引入了类似JSON的基于冒号的语法。因此:foo => :bar
,foo: :bar
它们是等价的(正如David在上面的注释中指出的那样,您在问题中将冒号放在了“ foo”的错误一侧。)
使用=>
仍然是为某些类型的键定义哈希的唯一方法(请参阅:是否已弃用Hash Rocket?)。因此,当您刚入门时,最好坚持一遍,=>
直到您对差异有所了解。
当您刚接触Rails时,可能会引起混乱的另一件事是ActiveSupport提供了一个称为的对象HashWithIndifferentAccess
,该对象将:foo
和"foo"
视为等效的键。常规RubyHash
对象不是这种情况。因此,请检查您要处理的对象的类。
:html
选项放在方括号中的原因是因为这是一个嵌套的哈希,使某人可以轻松地定义类似的方法form_for
并允许多个多值输入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句