From be0875f4580749c2c5ad84086f2e890ddeba7de8 Mon Sep 17 00:00:00 2001 From: Miklos Fazekas Date: Fri, 6 Feb 2015 22:44:48 +0100 Subject: 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) --- actionview/lib/action_view/helpers/tags/translator.rb | 2 +- actionview/test/template/form_helper_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/actionview/lib/action_view/helpers/tags/translator.rb b/actionview/lib/action_view/helpers/tags/translator.rb index 829679851c..e70fe024e8 100644 --- a/actionview/lib/action_view/helpers/tags/translator.rb +++ b/actionview/lib/action_view/helpers/tags/translator.rb @@ -6,7 +6,7 @@ module ActionView @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 diff --git a/actionview/test/template/form_helper_test.rb b/actionview/test/template/form_helper_test.rb index 1ed4fbafcf..4e336bea63 100644 --- a/actionview/test/template/form_helper_test.rb +++ b/actionview/test/template/form_helper_test.rb @@ -259,6 +259,18 @@ class FormHelperTest < ActionView::TestCase 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 + '' + end + + assert_dom_equal expected, output_buffer + end + def test_label_with_for_attribute_as_symbol assert_dom_equal('', label(:post, :title, nil, for: "my_for")) end -- cgit v1.2.3