Ruby on Rails: what does the => symbol mean?

前端 未结 2 1096
执笔经年
执笔经年 2021-02-01 20:22

I am working my way through Head First Rails, and I keep seeing =>. It\'s in the routes:

map.connect \'/marmots/new\', controller=>\'marmots\',

相关标签:
2条回答
  • 2021-02-01 21:08

    I've heard it commonly referred to as a "hash rocket". It is the assignment operator used with hashes in ruby. So if you have a hash and want to assign a value to a key (typically a literal), use

    {key1 => value1, key2 => value2}
    

    Rails, and other Ruby code, often pass hashes as parameters to methods to achieve the same effect as named arguments in other languages like Python.

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

    EDIT: When reading, I use "gets" as the verb, eg. param1 gets value1, etc.

    0 讨论(0)
  • 2021-02-01 21:12

    Your first function call is a shortcut for

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

    where the {} are a Hash-literal. The second argument of the method connect of the object map is an object of class Hash with the two keys :controller and :action (both are literals of the class Symbol) whose corresponding values are the two strings 'marmots' and 'new'.

    EDIT: I call it "arrow" or "maps to".

    0 讨论(0)
提交回复
热议问题