为什么在密码重置模板

时间:2018-01-08 09:31:10

标签: ruby-on-rails

我在railstutorial.org的ROR应用程序中看到了这段代码。

File: view/user_mailer/password_reset.html.erb

<h1><%= t ".heading" %></h1>
<p><%= t ".message"%></p>
<%= link_to t(".rs_password"), edit_password_reset_url(@user.reset_token,
  email: @user.email) %>
<p><%= t ".timelink"%></p>
<p><%= t ".warning"%></p>

那么,为什么要使用edit_password_reset_url。我使用_path然后rails有undefined method edit_password_reset_path。那么,有另一种方法可以使用_path吗?

  • 我认为有一个原因,使用_url return:http://localhost:3000/password_resets/{token}/edit?email=email08%40gmail.com
  • _path only retrurn:/password_resets/{token}/edit

1 个答案:

答案 0 :(得分:0)

这是因为_path给出了相对路径,而_url给出了绝对路径。

在电子邮件中,接收者需要一条绝对的应用程序路径

  

_path帮助程序提供站点根目录相对路径。你应该在大部分时间都使用它。

     

_url helpers提供绝对路径,包括协议和服务器名称。我发现在创建链接时我主要在电子邮件中使用这些   到服务器上的应用程序。它们应该主要在提供时使用   外部链接。 (想想电子邮件链接,RSS和类似的东西   在YouTube视频的“分享”部分下复制并粘贴网址字段。)