Вспомогательные методы, доступные в представлениях почтовой программы, зависят от среды? - PullRequest
1 голос
/ 28 января 2012

Относительно моего предыдущего вопроса У меня все еще есть одна вещь, которую я хотел бы понять - почему это:

= link_to(root_path)
= link_to(@some_path_set_in_mailer)

работает в режиме разработки (config.action_mailer.perform_deliveries было установлено в значение true, а электронные письма были фактически отправлены), а в процессе производства или подготовки необходимо изменить на:

= link_to(@some_path_set_in_mailer, @some_path_set_in_mailer)

чтобы избежать ошибки "Нет совпадений маршрутов {}"?

У меня была эта проблема в рельсах 3.2.

1 Ответ

0 голосов
/ 28 января 2012

Я не совсем уверен, почему есть разница, поскольку ее не должно быть.

Однако link_to обычно имеет такой формат:

= link_to("Some link description here", root_path)

Единственный раз, когда выкак правило, пропускайте текст описания ссылки, если у вас есть более длинное описание, которое нужно поместить в блок do, например:

= link_to(root_path) do
  %p Some link description here
  = image_tag("some_image.jpg")

Поэтому я бы рекомендовал придерживаться приведенных выше предпочтительных синтаксисов.

В документах по link_to на самом деле не говорится о слишком коротком методе, который вы используете.

Вот его источник:

# File actionpack/lib/action_view/helpers/url_helper.rb, line 231
def link_to(*args, &block)
  if block_given?
    options      = args.first || {}
    html_options = args.second
    link_to(capture(&block), options, html_options)
  else
    name         = args[0]
    # this is probably where your issue is coming from
    options      = args[1] || {}
    html_options = args[2]

    html_options = convert_options_to_data_attributes(options, html_options)
    url = url_for(options)

    href = html_options['href']
    tag_options = tag_options(html_options)

    href_attr = "href=\"#{ERB::Util.html_escape(url)}\"" unless href
    "<a #{href_attr}#{tag_options}>#{ERB::Util.html_escape(name || url)}</a>".html_safe
  end
end
...