提交 be0875f4 编写于 作者: M Miklos Fazekas

Fixed undefined method `i18n_key' for nil:NilClass for labels in non AR form_for

Refactoring at #18647 broke using non active record objects in form_for. This patch
restores the original behaviour where we only compute i18 key when object.respond_to?(:to_model)
上级 254693a3
......@@ -6,7 +6,7 @@ def initialize(object, object_name, method_and_value, scope:)
@object_name = object_name.gsub(/\[(.*)_attributes\]\[\d+\]/, '.\1')
@method_and_value = method_and_value
@scope = scope
@model = object.respond_to?(:to_model) ? object.to_model : object
@model = object.respond_to?(:to_model) ? object.to_model : nil
end
def translate
......
......@@ -259,6 +259,18 @@ def test_label_with_locales_fallback_and_nested_attributes
end
end
def test_label_with_non_active_record_object
form_for(OpenStruct.new(name:'ok'), as: 'person', url: 'an_url', html: { id: 'create-person' }) do |f|
f.label(:name)
end
expected = whole_form("an_url", "create-person", "new_person", method: "post") do
'<label for="person_name">Name</label>'
end
assert_dom_equal expected, output_buffer
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.
先完成此消息的编辑!
想要评论请 注册