From a0cdfdc771cd4034f69c9a08a188cf6ba7b110c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Jan 2010 16:10:19 +0100 Subject: [PATCH] Allow f.submit to be localized per object. --- .../lib/action_view/helpers/form_helper.rb | 16 +++++++++++++-- actionpack/test/template/form_helper_test.rb | 20 ++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb index 20cee46d02..20e9916d62 100644 --- a/actionpack/lib/action_view/helpers/form_helper.rb +++ b/actionpack/lib/action_view/helpers/form_helper.rb @@ -1096,6 +1096,14 @@ def error_messages(options = {}) # 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 @@ def submit_default_value @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) diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb index 454b6159ab..0c5c5d17ee 100644 --- a/actionpack/test/template/form_helper_test.rb +++ b/actionpack/test/template/form_helper_test.rb @@ -31,7 +31,10 @@ def setup :submit => { :create => 'Create {{model}}', :update => 'Confirm {{model}} changes', - :submit => 'Save changes' + :submit => 'Save changes', + :another_post => { + :update => 'Update your {{model}}' + } } } } @@ -550,6 +553,21 @@ def test_submit_without_object_and_locale_strings 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 = "
" + + "" + + "
" + 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| -- GitLab