get '/dashboard', to: 'dashboard#index', :as => 'dashboard'
これは普通のメッセージではを送信する(あなたは「メソッド呼び出し」と呼んでいるものが、メッセージとメソッドはRubyで異なるものです、とメッセージを送信するのメタファーは本当に重要であることに注意してください)。 Rubyで
、あなたは、引数リストを囲む括弧を省略することが許可されています。だから、これはこれと同じです。また、self
ことを暗示している場合にはメッセージ送信の受信機を除外するために許可されているので、これはこれと同じである
get('/dashboard', to: 'dashboard#index', :as => 'dashboard')
:
メッセージ送信の最後の引数は
Hash
リテラルの場合 は
self.get('/dashboard', to: 'dashboard#index', :as => 'dashboard')
、あなたは中括弧を省略することが許可されているので、これはこれと同じです。
self.get('/dashboard', { to: 'dashboard#index', :as => 'dashboard' })
の場合
今すぐ
self.get('/dashboard', { :to => 'dashboard#index', :as => 'dashboard' })
、それはただ退屈な古いメッセージを送るようには見えません:Hash
リテラルのキーがあなたの代わり:key => value
のkey: value
を書き込むことができ、これはこれと同じであるが、Symbol
のですか?
これらの規則のほとんどは、より自然に見えるコードを記述できるようにするためのものです。例えば、物事はは、Rubyでちょうど方法があり、他の言語でキーワードをなることなどattr_reader
、attr_writer
、attr_accessor
、require
、private
、public
、protected
、同様にそれはあなたが括弧を使用する必要があった場合には、奇妙な外観となりそこに受信機:
self.protected()
def foo() end
# instead of
protected
def foo() end
# or
self.private(def foo() end)
# instead of
private def foo() end
あなたは周りの中括弧を省略することができますルールリテラルHash
は、導入された後続のように、あなたでした「偽」キーワード引数:
def route(path, options = {}) end
route(:index, :from => :here, :to => :there)
さらにので、新しいスタイルの記号キーを持つ:ルビー2.0のように、Rubyはまた、後方互換性のためにHash
末尾のよう正確を見て適切キーワード引数を、持っていることを
route(:index, from: :here, to: :there)
注
:
def route(path, from:, to:, with: nil) end
route(:index, from: :here, to: :there) # this line same as above
"to:"は "get"メソッドのパラメータ(明示的に)の名前にすぎませんか? 2番目の部分は、ハッシュのキーと値のペアにすぎません。 – mute
私は 'to'が' get'のオプションではないと思っています...私はRailsが '/ dashboard'をどこのコントローラとアクションにマップするかを推測できないのでしょうか? – MrYoshiji
@MrYoshiji - ええ、私は 'action_dispatch'ソースコードを見ていました。なぜなら、私は'任意の 'アサーションで少し不快だったからです。私はそれが不正確だと感じるので、その言葉を削除すると思います。 – jvillian