这是我的重置密码Haml文件:
%p= link_to 'Changme', edit_password_url(@user, reset_password_token: @user.reset_password_token)
第一件奇怪的事情是没有路线edit_password_url
,但有一条路线edit_user_password_url
。如果我拿第二个,我最终会得到类似的东西:
localhost:/users/password/edit.9?reset_password_token=yeePkkvDzaDj3DFFuXBq
请注意,网址中有.9
。
我将其更改为edit_password_url
,但当我在我的生产系统上测试它并收到激活网址电子邮件时,http
后链接结果显示没有冒号。
http//mywebsite.com/users/password/edit?reset_password_token=yeePkkvDzaDj3DFFuXBq
如果第一个奇怪的事情是可以接受的,那么第二个确实应该被修复,但似乎我的代码中没有错误。
如何摆脱它?
答案 0 :(得分:1)
您的edit_user_password_url很可能不会收到用户ID。你在使用Devise吗?如果您这样做,我认为您的代码将起作用:
%p= link_to 'Changme',
edit_password_url(reset_password_token: @user.reset_password_token)
要确认,请运行rake routes |grep password
并发布输出