簡體   English   中英

如何使用Devise在Rails中進行錯誤消息插值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM