diff --git a/actionview/lib/action_view/record_identifier.rb b/actionview/lib/action_view/record_identifier.rb index ec4cba97fc786..a48f10fcaad21 100644 --- a/actionview/lib/action_view/record_identifier.rb +++ b/actionview/lib/action_view/record_identifier.rb @@ -91,6 +91,8 @@ def dom_class(record_or_class, prefix = nil) # dom_id(Post.find(45), :edit) # => "edit_post_45" # dom_id(Post, :custom) # => "custom_post" def dom_id(record_or_class, prefix = nil) + raise ArgumentError, "dom_id must be passed a record_or_class as the first argument, you passed #{record_or_class.inspect}" unless record_or_class + record_id = record_key_for_dom_id(record_or_class) unless record_or_class.is_a?(Class) if record_id "#{dom_class(record_or_class, prefix)}#{JOIN}#{record_id}" diff --git a/actionview/test/template/record_identifier_test.rb b/actionview/test/template/record_identifier_test.rb index f28425301cc40..5b71fd0c83814 100644 --- a/actionview/test/template/record_identifier_test.rb +++ b/actionview/test/template/record_identifier_test.rb @@ -83,6 +83,12 @@ def test_dom_id_with_prefix assert_equal "edit_airplane_1", dom_id(@record, :edit) end + def test_dom_id_raises_useful_error_when_passed_nil + assert_raises ArgumentError do + ActionView::RecordIdentifier.dom_id(nil) + end + end + def test_dom_class assert_equal "airplane", dom_class(@record) end