2009-06-09 16 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 %>

基本的には、=>は「意味のようですと等しいですが、そうであれば、なぜ等しい看板?それはもっと「送ってください」のようなものですか?

=>どのように発音するのですか?それを意味するものは何ですか?私はこれを知らずに得ることができますが、それは私をバグします。

+1

この質問を見ると3年後に私は笑います!以前はRubyのハッシュを見たことがありましたが、Rails以外ではメソッド呼び出しのカッコと最後のハッシュ引数の中かっこの両方を省略した例はありませんでした。 –

答えて

8

あなたの最初の関数呼び出しは{}ハッシュリテラルである

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

のショートカットです。オブジェクトマップのメソッドconnectの2番目の引数は、controllerと:action(どちらもSymbolクラスのリテラル)の2つの文字列 'marmots'と 'new'を持つHas​​hクラスのオブジェクトです。

編集:私はそれを「矢印」または「マップする」と呼びます。

+0

私は矢印を見るたびに、{}を省略しても実際にハッシュを作成していると言っても過言ではありませんか? –

+0

はい、メソッド呼び出しのパラメータはありません。一般的にはnoです(レスキューで例外をキャッチすると、演算子 "=>"も使用されます)。 –

18

「ハッシュロケット」と一般に呼ばれていると聞いたことがあります。これは、ルビのハッシュで使用される代入演算子です。だから、あなたはハッシュを持っているし、キー(通常はリテラル)に値を割り当てる場合、

{key1 => value1, key2 => value2} 

を使用するレール、および他のRubyのコードは、多くの場合、名前のと同じ効果を達成するために、メソッドのパラメータとしてハッシュを渡しますPythonのような他の言語の引数

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

EDIT:私が読むときは、動詞として「gets」を使用します。 param1は値1などを取得します。

+0

私は名前付き引数のビットが好きです。明確な応答をありがとう –

関連する問題