mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #3654 from wildchild/label_i18n
Fix impractical I18n lookup in nested fields_for
This commit is contained in:
commit
e2d3060a68
2 changed files with 55 additions and 1 deletions
|
@ -995,8 +995,16 @@ module ActionView
|
|||
label_tag(name_and_id["id"], options, &block)
|
||||
else
|
||||
content = if text.blank?
|
||||
object_name.gsub!(/\[(.*)_attributes\]\[\d\]/, '.\1')
|
||||
method_and_value = tag_value.present? ? "#{method_name}.#{tag_value}" : method_name
|
||||
I18n.t("helpers.label.#{object_name}.#{method_and_value}", :default => "").presence
|
||||
|
||||
if object.respond_to?(:to_model)
|
||||
key = object.class.model_name.i18n_key
|
||||
i18n_default = ["#{key}.#{method_and_value}".to_sym, ""]
|
||||
end
|
||||
|
||||
i18n_default ||= ""
|
||||
I18n.t("#{object_name}.#{method_and_value}", :default => i18n_default, :scope => "helpers.label").presence
|
||||
else
|
||||
text.to_s
|
||||
end
|
||||
|
|
|
@ -27,7 +27,13 @@ class FormHelperTest < ActionView::TestCase
|
|||
:body => "Write entire text here",
|
||||
:color => {
|
||||
:red => "Rojo"
|
||||
},
|
||||
:comments => {
|
||||
:body => "Write body here"
|
||||
}
|
||||
},
|
||||
:tag => {
|
||||
:value => "Tag"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -68,6 +74,12 @@ class FormHelperTest < ActionView::TestCase
|
|||
@post.secret = 1
|
||||
@post.written_on = Date.new(2004, 6, 15)
|
||||
|
||||
@post.comments = []
|
||||
@post.comments << @comment
|
||||
|
||||
@post.tags = []
|
||||
@post.tags << Tag.new
|
||||
|
||||
@blog_post = Blog::Post.new("And his name will be forty and four.", 44)
|
||||
end
|
||||
|
||||
|
@ -151,6 +163,40 @@ class FormHelperTest < ActionView::TestCase
|
|||
I18n.locale = old_locale
|
||||
end
|
||||
|
||||
def test_label_with_locales_and_nested_attributes
|
||||
old_locale, I18n.locale = I18n.locale, :label
|
||||
form_for(@post, :html => { :id => 'create-post' }) do |f|
|
||||
f.fields_for(:comments) do |cf|
|
||||
concat cf.label(:body)
|
||||
end
|
||||
end
|
||||
|
||||
expected = whole_form("/posts/123", "create-post" , "edit_post", :method => "put") do
|
||||
"<label for=\"post_comments_attributes_0_body\">Write body here</label>"
|
||||
end
|
||||
|
||||
assert_dom_equal expected, output_buffer
|
||||
ensure
|
||||
I18n.locale = old_locale
|
||||
end
|
||||
|
||||
def test_label_with_locales_fallback_and_nested_attributes
|
||||
old_locale, I18n.locale = I18n.locale, :label
|
||||
form_for(@post, :html => { :id => 'create-post' }) do |f|
|
||||
f.fields_for(:tags) do |cf|
|
||||
concat cf.label(:value)
|
||||
end
|
||||
end
|
||||
|
||||
expected = whole_form("/posts/123", "create-post" , "edit_post", :method => "put") do
|
||||
"<label for=\"post_tags_attributes_0_value\">Tag</label>"
|
||||
end
|
||||
|
||||
assert_dom_equal expected, output_buffer
|
||||
ensure
|
||||
I18n.locale = old_locale
|
||||
end
|
||||
|
||||
def test_label_with_for_attribute_as_symbol
|
||||
assert_dom_equal('<label for="my_for">Title</label>', label(:post, :title, nil, :for => "my_for"))
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue