包含路径不起作用的自定义验证消息(在模型文件中)

时间:2015-06-04 14:03:16

标签: ruby-on-rails ruby ruby-on-rails-4 heroku model

在用户模型文件中,我包括:

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的解决方案。

1 个答案:

答案 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>.'