Как символ (например, метка) обрабатывается как часть хэша параметра - PullRequest
4 голосов
/ 07 октября 2009

Я просматривал пример кода из книги О'Рейли по Ruby on Rails и наткнулся на это:

 def label_for(method, options={})
    extra = ""
    if options[:required]
      extra = " <span class='required_mark'>*</span>"
    end
    label(:label || method) + extra + "<br />"
  end

Я понимаю, что options - это хеш, но как он может вызвать label только с :label - разве ему не нужно говорить options[:label]?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 07 октября 2009

Да, я верю, иначе символ :label всегда будет передаваться как method имя помощнику label.

1 голос
/ 07 октября 2009

Вы правы.

label(options[:label] || method) + extra + "<br />"
1 голос
/ 07 октября 2009

Предполагается, что это будет options[:label], если автор действительно не имел в виду что-то еще. Потому что :label || method всегда возвращает :label, который затем передается метке.

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