在用户模型文件中,我包括:
validates :email, uniqueness: { case_sensitive: false, message: "You can reset your password " + link_to("here", new_password_reset_path) }
在开发服务器上加载页面时,会生成错误:
undefined local variable or method `new_password_reset_path' for #<Class:0x007f4d36863460>
下面的替代代码具有相同的结果/错误消息。
validates :email, uniqueness: { message: "You can reset your password #{link_to("here", new_password_reset_path)}" }
是否无法引用模型文件中的路径?如果没有,我怎么能在这里实现预期的呢?
更新:首先,模型文件中包含Rails.application.routes.url_helpers
的解决方案似乎有效。确实在开发过程中他们工作了。然而,事实证明,它们不适用于生产。他们在Heroku上崩溃了网站。 This帖子似乎也提到类似的内容,似乎表明你不应该在模型文件中使用Rails.application.routes.url_helpers
。推送到Heroku后,当我尝试打开网站时,它显示“应用程序错误”。所以我检查了heroku日志,发现:
app[web.1]: [3] ! Unable to load application: NoMethodError: undefined method `new_password_reset_path' for #<Module:0x007f7392350b08>
app[web.1]: /app/app/models/user.rb:32:in `<class:User>': undefined method `new_password_reset_path' for #<Module:0x007f7392350b08> (NoMethodError)
有没有人有一个替代解决方案,也适用于Heroku /生产? 即,如何在模型文件中的自定义验证消息中包含url / path的解决方案。
答案 0 :(得分:0)
你可以试试这个。我希望这会有所帮助。
<强>配置/区域设置/ en.yml 强>
sudo docker run gcr.io/MY-PROJECT/ae-image
在用户模型中。
en:
activerecord:
errors:
messages:
email: 'You can reset your password <a href="%{link}">here</a>.'