提交 c2b6f63b 编写于 作者: A Alexander Uvarov

Fix impractical I18n lookup in nested fields_for

上级 e3671422
......@@ -995,8 +995,16 @@ def to_label_tag(text = nil, options = {}, &block)
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 @@ def setup
:body => "Write entire text here",
:color => {
:red => "Rojo"
},
:comments => {
:body => "Write body here"
}
},
:tag => {
:value => "Tag"
}
}
}
......@@ -68,6 +74,12 @@ def @post.to_param; '123'; end
@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 @@ def test_label_with_locales_and_value
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册