提交 e2b19168 编写于 作者: I Iain Hecker 提交者: Sven Fuchs

Added :value as interpolation variable available to error messages

上级 c5312489
......@@ -92,17 +92,19 @@ def generate_message(attribute, message = :invalid, options = {})
:"custom.#{klass.name.underscore}.#{message}" ]
end
defaults << options[:default] if options[:default]
defaults.flatten! << message
defaults << options.delete(:default)
defaults = defaults.compact.flatten << message
model_name = @base.class.name
key = defaults.shift
options.merge!({
:default => defaults,
:model => @base.class.human_name,
:attribute => @base.class.human_attribute_name(attribute.to_s),
:scope => [:activerecord, :errors, :messages] })
value = @base.send(attribute) if @base.respond_to?(attribute)
options = { :default => defaults,
:model => @base.class.human_name,
:attribute => @base.class.human_attribute_name(attribute.to_s),
:value => value,
:scope => [:activerecord, :errors, :messages]
}.merge(options)
I18n.translate(key, options)
end
......
......@@ -48,7 +48,7 @@ def test_errors_generate_message_translates_custom_model_attribute_key
I18n.expects(:translate).with(:topic, {:count => 1, :default => ['Topic'], :scope => [:activerecord, :models]}).returns('Topic')
I18n.expects(:translate).with(:'topic.title', {:count => 1, :default => ['Title'], :scope => [:activerecord, :attributes]}).returns('Title')
I18n.expects(:translate).with(:"custom.topic.title.invalid", :scope => global_scope, :default => [:"custom.topic.invalid", 'default from class def error 1', :invalid], :attribute => "Title", :model => "Topic").returns('default from class def error 1')
I18n.expects(:translate).with(:"custom.topic.title.invalid", :value => nil, :scope => global_scope, :default => [:"custom.topic.invalid", 'default from class def error 1', :invalid], :attribute => "Title", :model => "Topic").returns('default from class def error 1')
@topic.errors.generate_message :title, :invalid, :default => 'default from class def error 1'
end
......@@ -56,7 +56,7 @@ def test_errors_generate_message_translates_custom_model_attribute_keys_with_sti
custom_scope = [:activerecord, :errors, :custom, 'topic', :title]
I18n.expects(:translate).with(:reply, {:count => 1, :default => [:topic, 'Reply'], :scope => [:activerecord, :models]}).returns('Reply')
I18n.expects(:translate).with(:'reply.title', {:count => 1, :default => [:'topic.title', 'Title'], :scope => [:activerecord, :attributes]}).returns('Title')
I18n.expects(:translate).with(:"custom.reply.title.invalid", :scope => [:activerecord, :errors, :messages], :default => [:"custom.reply.invalid", :"custom.topic.title.invalid", :"custom.topic.invalid", 'default from class def', :invalid], :model => 'Reply', :attribute => 'Title').returns("default from class def")
I18n.expects(:translate).with(:"custom.reply.title.invalid", :value => nil, :scope => [:activerecord, :errors, :messages], :default => [:"custom.reply.invalid", :"custom.topic.title.invalid", :"custom.topic.invalid", 'default from class def', :invalid], :model => 'Reply', :attribute => 'Title').returns("default from class def")
Reply.new.errors.generate_message :title, :invalid, :default => 'default from class def'
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册