Являются ли помощники URL только для просмотров? - PullRequest
2 голосов
/ 13 марта 2011

В почтовом я пытаюсь сделать это:

def registartion

..

   @login_url = login_users_path(@path)

..

end

Но это ошибка, и она не работает в консоли.'неопределенный метод login_users_path ...'

Ответы [ 3 ]

2 голосов
/ 13 марта 2011

См. Создание URL-адресов в представлениях Action Mailer в руководстве по Action Mailer.Акцент в моем последнем абзаце (это часть, которая должна решить вашу проблему):

URL-адреса могут быть сгенерированы в представлениях почтовой программы с использованием url_for или именованных маршрутов.

В отличие от контроллеров,экземпляр почтовой программы не имеет никакого контекста о входящем запросе, поэтому вам нужно будет указать :host, :controller и :action:

<%= url_for(:host => "example.com",
            :controller => "welcome",
            :action => "greeting") %>

При использовании именованных маршрутов вам нужны толькодля предоставления :host:

<%= user_url(@user, :host => "example.com") %>

Клиенты электронной почты не имеют веб-контекста, поэтому у путей нет базового URL-адреса для формирования полных веб-адресов.Таким образом, при использовании именованных маршрутов имеет смысл только вариант «_url».

0 голосов
/ 13 марта 2011

В дополнение к ответу @Brandon Tilley, вы можете избежать указания :host, если определите в (для разработки) environments/development.rb:

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

Тогда вы можете сделать:

@login_url = login_users_url(@path)

Вы хотите использовать полные URL-адреса (http://example.com/something) вместо относительных путей (/ что-то) в ваших электронных письмах!

0 голосов
/ 13 марта 2011

Брэндон ответил на этот вопрос, но для дальнейшего использования:

В качестве подсказки для доступа к маршрутам в консоли:

Для доступа к маршрутам в консоли вы можете использоватьследующий формат:

app.{insert_route_here}

, поэтому в вашем случае:

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