![](/img/trans.png)
[英]Rails + Devise: How do I get an error message if password is not changed?
[英]How to do Error Message Interpolation in Rails with Devise?
我有一個運行Devise 2.3的Rails 3.2應用程序。 我將電子郵件地址保留為默認身份驗證密鑰。 當用戶嘗試使用現有電子郵件地址創建新帳戶時,我想向他顯示指向登錄名和重置密碼頁面的鏈接。
有另一個問題的答案 ,建議如何在Rails中進行此操作,但是使用Devise時並不能解決問題。 嘗試在電子郵件上定義自定義驗證時,服務器甚至無法啟動。 參見pastebin 。
有沒有一種方法可以覆蓋或劫持Devise添加的錯誤消息以改用我自己的錯誤消息? 還是有一種添加全局插值的方法?
這是我想顯示的消息:
taken: email already used, please <a href='%{login_link}'>login</a> or <a href='%{reset_link}'>reset your password</a>
該應用嘗試顯示它,但抱怨缺少插值鍵。 如何使用已在電子郵件上進行驗證的Devise分配插值鍵?
這可能不是此問題的典型示例,因為應用程序鏈接是相當靜態的,並且在這里可以進行硬編碼。 如果要插值其他真正的動態值怎么辦?
嘗試從user.rb文件傳遞這些
validates :email, :uniqueness => {:login_link => Rails.application.routes.url_helpers.new_user_session_path,
:reset_link => Rails.application.routes.url_helpers.new_user_password_path}
AFAIK是不可能的,只要通過在身份驗證模型上聲明以下內容來使用Devise的默認驗證即可:
devise :validatable
為了在使用Devise時在帶有YAML語言環境文件的Rails中使用錯誤消息變量插值,必須手動聲明所有驗證,並且必須停用由Devise提供的驗證。
當嘗試覆蓋單個現有驗證時,Rails 3.2在初始化期間失敗。 因此,在使用Devise驗證時,這是一個全過程或全過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.