Ruby on Rails: что означает символ =>? - PullRequest
18 голосов
/ 09 июня 2009

Я пробираюсь через Head First Rails и продолжаю видеть =>. Это в маршрутах:

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

Это в части рендеринга:

render :partial=>"new_marmot"

В настройках ссылок:

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

По сути, => кажется означающим «равно», но если так, то почему бы просто не использовать знак равенства? Это больше похоже на «отправить?»

Как вы произносите => и что вы понимаете под этим? Я могу обойтись, не зная об этом, но это меня раздражает.

Ответы [ 2 ]

19 голосов
/ 09 июня 2009

Я слышал, что это обычно называют "хэш-ракетой". Это оператор присваивания, используемый с хешами в ruby. Поэтому, если у вас есть хеш и вы хотите присвоить ключу значение (обычно литерал), используйте

{key1 => value1, key2 => value2}

Rails и другой код Ruby часто передают хэши как параметры методам для достижения того же эффекта, что и именованные аргументы в других языках, таких как Python.

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

РЕДАКТИРОВАТЬ: При чтении я использую «получает» в качестве глагола, например. param1 получает значение1 и т. д.

9 голосов
/ 09 июня 2009

Ваш первый вызов функции является ярлыком для

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

где {} - хеш-литерал. Второй аргумент метода connect карты объектов - это объект класса Hash с двумя ключами: controller и: action (оба являются литералами класса Symbol), соответствующими значениями которых являются две строки 'marmots' и 'new'.

РЕДАКТИРОВАТЬ: я называю это "стрелка" или "отображается на".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...