2009-06-09 61 views
16

我正在通过Head First Rails工作,我一直在看=>。它在路线:Ruby on Rails:=>符号是什么意思?

map.connect '/marmots/new', controller=>'marmots', :action=>'new'

这是在渲染谐音:

render :partial=>"new_marmot"

它在选项链接:

<%= link_to 'Destroy', marmot, :confirm=>'Are you sure?', :method=>:delete %>

基本上,=>似乎意味着“等于',但如果是这样,为什么不使用平等s的标志?这更像是“寄给?”吗?

如何发音=>以及您是否理解它的含义?我可以不知道这一点,但它让我感到困扰。

+1

3年后见到这个问题让我大笑!我确定以前我看过Ruby哈希函数,但也许我没有看到Rails之外的例子,在这些例子中,您忽略了方法调用的括号和最后的哈希参数周围的大括号,所以它看起来很神奇。 – 2012-12-09 00:29:28

回答

8

你的第一个函数调用是

map.connect('/marmots/new', {:controller=>'marmots', :action=>'new'}) 

其中{}是一个Hash-文字的快捷方式。连接对象映射的方法的第二个参数是类Hash的一个对象,其中包含两个键:controller和action(都是类Symbol的文字),其相应的值是两个字符串'marmots'和'new'。

编辑:我称之为“箭头”或“映射到”。

+0

可以肯定地说,只要我看到箭头,我实际上创建了一个哈希,即使{}被省略了吗? – 2009-06-09 13:07:28

+0

对于方法调用中的参数是的,一般情况下是否定的(如果通过救援捕获异常,则也使用操作符“=>”)。 – 2009-06-09 13:36:20

18

我听说过它通常被称为“散列火箭”。它是与红宝石中的哈希值一起使用的赋值运算符。所以,如果你有一个散列,并希望赋值给一个键(通常为文字),使用

{key1 => value1, key2 => value2} 

Rails和其他Ruby代码,通常通过哈希作为参数传递给方法,可以达到同样的效果,命名其他语言如Python的参数。

object.method({:param1 => value1, :param2 => value2}) 

编辑:读书的时候,我用 “被” 作为动词,如。 param1获取值1等。