url帮助程序仅用于视图吗?

时间:2011-03-13 18:20:19

标签: ruby-on-rails

在邮件中我试图这样做:

def registartion

..

   @login_url = login_users_path(@path)

..

end

但它正在通过一个错误,它也无法在控制台中运行。 'undefined method login_users_path ...'

3 个答案:

答案 0 :(得分:2)

请参阅Action Mailer指南中的Generating URLs in Action Mailer views。强调我的最后一段(这是应该解决你问题的部分):

  

可以使用url_for或命名路由在邮件程序视图中生成URL。

     

与控制器不同,邮件程序实例没有关于传入请求的任何上下文,因此您需要提供:host:controller:action

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

使用命名路线时,您只需提供:host

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

电子邮件客户端没有Web上下文,因此路径没有基本URL来形成完整的Web地址。因此,当使用命名路由时,只有“_url”变体才有意义。

答案 1 :(得分:0)

布兰登回答了这个问题,但供将来参考:

作为访问控制台中路线的提示:

要在控制台中访问路线,您可以使用以下格式:

app.{insert_route_here}

所以在你的情况下:

app.login_users_path

答案 2 :(得分:0)

除了@Brandon Tilley的答案之外,如果您定义(用于开发):host,则可以避免必须指定environments/development.rb

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

然后你可以这样做:

@login_url = login_users_url(@path)

您希望在电子邮件中使用完全限定的网址(http://example.com/something)而不是相对路径(/某些内容)!