Allow f.submit to be localized per object.

This commit is contained in:
José Valim 2010-01-15 16:10:19 +01:00
parent e5a2a9fced
commit a0cdfdc771
2 changed files with 33 additions and 3 deletions

View File

@ -1096,6 +1096,14 @@ module ActionView
# create: "Create a {{model}}"
# update: "Confirm changes to {{model}}"
#
# It also searches for a key specific for the given object:
#
# en:
# helpers:
# submit:
# post:
# create: "Add {{model}}"
#
def submit(value=nil, options={})
value, options = nil, value if value.is_a?(Hash)
value ||= submit_default_value
@ -1121,8 +1129,12 @@ module ActionView
@object_name.to_s.humanize
end
I18n.t(:"helpers.submit.#{key}", :model => model,
:default => "#{key.to_s.humanize} #{model}")
defaults = []
defaults << :"helpers.submit.#{object_name}.#{key}"
defaults << :"helpers.submit.#{key}"
defaults << "#{key.to_s.humanize} #{model}"
I18n.t(defaults.shift, :model => model, :default => defaults)
end
def nested_attributes_association?(association_name)

View File

@ -31,7 +31,10 @@ class FormHelperTest < ActionView::TestCase
:submit => {
:create => 'Create {{model}}',
:update => 'Confirm {{model}} changes',
:submit => 'Save changes'
:submit => 'Save changes',
:another_post => {
:update => 'Update your {{model}}'
}
}
}
}
@ -550,6 +553,21 @@ class FormHelperTest < ActionView::TestCase
I18n.locale = old_locale
end
def test_submit_with_object_and_nested_lookup
old_locale, I18n.locale = I18n.locale, :submit
form_for(:another_post, @post) do |f|
concat f.submit
end
expected = "<form action='http://www.example.com' method='post'>" +
"<input name='commit' id='another_post_submit' type='submit' value='Update your Post' />" +
"</form>"
assert_dom_equal expected, output_buffer
ensure
I18n.locale = old_locale
end
def test_nested_fields_for
form_for(:post, @post) do |f|
f.fields_for(:comment, @post) do |c|