Add options for FailureApp's i18n_message. Similar #1633
This commit is contained in:
parent
8bef8b87f1
commit
d5514bf916
|
@ -68,8 +68,13 @@ module Devise
|
|||
message = warden_message || default || :unauthenticated
|
||||
|
||||
if message.is_a?(Symbol)
|
||||
I18n.t(:"#{scope}.#{message}", :resource_name => scope,
|
||||
:scope => "devise.failure", :default => [message])
|
||||
options = {}
|
||||
options[:resource_name] = scope
|
||||
options[:scope] = "devise.failure"
|
||||
options[:default] = [message]
|
||||
options = i18n_options(options) if respond_to?(:i18n_options, true)
|
||||
|
||||
I18n.t(:"#{scope}.#{message}", options)
|
||||
else
|
||||
message.to_s
|
||||
end
|
||||
|
|
|
@ -8,6 +8,12 @@ class FailureTest < ActiveSupport::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
class FailureWithI18nOptions < Devise::FailureApp
|
||||
def i18n_options(options)
|
||||
options.merge(:name => 'Steve')
|
||||
end
|
||||
end
|
||||
|
||||
def self.context(name, &block)
|
||||
instance_eval(&block)
|
||||
end
|
||||
|
@ -67,6 +73,11 @@ class FailureTest < ActiveSupport::TestCase
|
|||
assert_equal 'http://test.host/users/sign_in', @response.second["Location"]
|
||||
end
|
||||
|
||||
test 'uses custom i18n options' do
|
||||
call_failure('warden' => OpenStruct.new(:message => :does_not_exist), :app => FailureWithI18nOptions)
|
||||
assert_equal 'User Steve does not exist', @request.flash[:alert]
|
||||
end
|
||||
|
||||
test 'uses the proxy failure message as string' do
|
||||
call_failure('warden' => OpenStruct.new(:message => 'Hello world'))
|
||||
assert_equal 'Hello world', @request.flash[:alert]
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
en:
|
||||
devise:
|
||||
failure:
|
||||
user:
|
||||
does_not_exist: "User %{name} does not exist"
|
||||
errors:
|
||||
messages:
|
||||
taken: "has already been taken"
|
||||
|
|
Loading…
Reference in New Issue