Rails 5.1邮件错误 - 模板中的帐户激活参数
我正在关注Mike Hartl的Rails教程&在创建电子邮件模板时遇到了问题。 (请注意:本教程是基于on Rails的5.0.1,而我使用Rails 5.1.1春耕提前。)Rails 5.1邮件错误 - 模板中的帐户激活参数
本教程使用:activation_token & :activation_digest属性来处理注册的安全隐患URL和:create_activation_digest挂钩在创建用户模型之前设置它们的值。
这里的邮件视图模板:
<%= link_to "Activate", edit_account_activation_url(@user.activation_token, email: @user.email) %>
的问题似乎是在告诉梅勒使用的值:在activation_token:路由的ID领域。 (A URL定义错误)
,路线如下定义,从rails routes
:
edit_account_activation GET /account_activations/:id/edit(.:format) account_activations#edit
错误反馈:
No route matches {:action=>"edit", :controller=>"account_activations", :email=>"[email protected]", :format=>nil, :id=>nil}, possible unmatched constraints: [:id]
我试着硬编码ID:@ user.activation_token在邮件模板,无济于事。
这似乎是一个容易的,但我很难过,有点担心,我忽略了从Rails 5.0.x到5.1.x的过渡中隐藏的东西。有任何想法吗?
您会收到此错误消息,因为在您的config/routes.rb
文件中,您GET /account_activations/:id/edit
。这就需要发送一个你不想/不需要的ID。现在我知道Rails Tutorial使用:id作为标记。但是你并没有在你的链接中定义id:
。因此,无论您需要更改路线还是更改链接。
<%= link_to "Activate", edit_account_activation_url(id: @user.activation_token, email: @user.email) %>
通知我定义了id:
。通常在本教程之外,您应该考虑将您的路线更改为GET /account_activations/edit/:token
,然后通过令牌查找用户。
谢谢大家, 但是,错误与我如何在用户模型中定义:activation_token挂钩有关。现在所有测试都通过了
嗨,布赖恩,你还记得你做错了什么,因为我面临同样的问题。谢谢。 – OnlySteveH
请检查'@ user.activation_token'是否为零? –