mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
66a7cfa910
The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
49 lines
1.1 KiB
Ruby
49 lines
1.1 KiB
Ruby
require "active_support/core_ext/module/attribute_accessors"
|
|
require "active_support/core_ext/enumerable"
|
|
|
|
module ActionView
|
|
# = Active Model Helpers
|
|
module Helpers
|
|
module ActiveModelHelper
|
|
end
|
|
|
|
module ActiveModelInstanceTag
|
|
def object
|
|
@active_model_object ||= begin
|
|
object = super
|
|
object.respond_to?(:to_model) ? object.to_model : object
|
|
end
|
|
end
|
|
|
|
def content_tag(*)
|
|
error_wrapping(super)
|
|
end
|
|
|
|
def tag(type, options, *)
|
|
tag_generate_errors?(options) ? error_wrapping(super) : super
|
|
end
|
|
|
|
def error_wrapping(html_tag)
|
|
if object_has_errors?
|
|
Base.field_error_proc.call(html_tag, self)
|
|
else
|
|
html_tag
|
|
end
|
|
end
|
|
|
|
def error_message
|
|
object.errors[@method_name]
|
|
end
|
|
|
|
private
|
|
|
|
def object_has_errors?
|
|
object.respond_to?(:errors) && object.errors.respond_to?(:[]) && error_message.present?
|
|
end
|
|
|
|
def tag_generate_errors?(options)
|
|
options["type"] != "hidden"
|
|
end
|
|
end
|
|
end
|
|
end
|