How can I customize error messages the overridden divise passwords controller?
class PasswordsController < Devise::PasswordsController
def create
self.resource = resource_class.send_reset_password_instructions(params[resource_name])
if resource.errors.empty?
set_flash_message(:notice, :send_instructions) if is_navigational_format?
respond_with resource, :location => home_path
else
binding.pry
flash[:devise_password_error] = (resource.errors.map do |key, value|
value.capitalize
end).flatten.join('|')
redirect_to home_path and return
end
end
def edit
self.resource = resource_class.new
resource.reset_password_token = params[:reset_password_token]
end
end
resource.errors is available in this method but it contains default messages such as Email not found
and Email can't be blank
. i need to customize this messages. I've tried to remove :validatable
from my user model and add custom validators but this works only for my custom registrations controller derived from Devise::RegistrationsController and not for custom passwords controller.
Is there any solution?
Devise messages are located in config/locales/devise.en.yml
I'm not sure which message you're trying to override, but that's where you want to do that.
Add this to your routes.rb
or
The answer is to modify config/locales/devise.en.yml but you must add the settings, they are not there by default.
Credit for this goes to Vimsha who answered virtually the same question for me.
It's not ideal, but based on this related ticket I've got it working with the following (which I know is a bit of a hack, but it works):
Put this in a module called
devise_helper.rb
in your/app/helpers
directory