0

冒号在开头和结尾使用时表示什么?我认为乞求某事时的冒号(例如:set_cart)表示一种方法。这个对吗?这里有一些例子:

<%= button_to "Checkout", new_order_path, method: :get %>
<%= button_to "Empty Cart", @cart, method: :delete,
    data: {confirm: 'Are you sure?' } %>

编辑:另一个例子

before_action :set_cart, only: [:new, :create]
before_action :set_order, only: [:show, :edit, :update, :destroy]
4

2 回答 2

4

这是符号索引哈希的新语法,在 Ruby 1.9 中引入(我相信)。

{ :key => 'value' }你现在可以写而不是旧的{ key: 'value' }。在引擎盖下,哈希是完全相同的,所以它只是一个真正的符号变化。

2.0.0p247 :001 > { key: 'value' }
 => {:key=>"value"}

在您的示例中,method: :delete 只是一种不同的写作方式 :method => :delete。

于 2013-08-07T18:44:44.097 回答
3

开头的冒号表示 Ruby Symbol对象。

> :name.class
=> Symbol

某事物末尾的冒号表示 Ruby Hash对象中的 Symbol 键。这种新的 Hash 语法是在 Ruby 1.9 中引入的。

> hash = { key: 'val' }
=> {:key=>"val"}

当它们一起使用时,正如预期的那样,它会创建一个哈希对,其中的键和值都是符号。

> { key: :val }
=> {:key => :val}
于 2013-08-07T18:49:58.097 回答