Class: ActionView::Helpers::InstanceTag
Overview
Constant Summary
collapse
- DEFAULT_FIELD_OPTIONS =
{ "size" => 30 }
- DEFAULT_RADIO_OPTIONS =
{ }
- DEFAULT_TEXT_AREA_OPTIONS =
{ "cols" => 40, "rows" => 20 }
Constants included
from TagHelper
TagHelper::BOOLEAN_ATTRIBUTES, TagHelper::PRE_CONTENT_STRINGS
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
-
#initialize(object_name, method_name, template_object, object = nil) ⇒ InstanceTag
constructor
A new instance of InstanceTag.
-
#retrieve_autoindex(pre_match) ⇒ Object
-
#retrieve_object(object) ⇒ Object
-
#to_boolean_select_tag(options = {}) ⇒ Object
-
#to_check_box_tag(options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object
-
#to_collection_select_tag(collection, value_method, text_method, options, html_options) ⇒ Object
-
#to_content_tag(tag_name, options = {}) ⇒ Object
-
#to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options) ⇒ Object
-
#to_input_field_tag(field_type, options = {}) ⇒ Object
-
#to_label_tag(text = nil, options = {}, &block) ⇒ Object
-
#to_number_field_tag(field_type, options = {}) ⇒ Object
-
#to_radio_button_tag(tag_value, options = {}) ⇒ Object
-
#to_select_tag(choices, options, html_options) ⇒ Object
-
#to_text_area_tag(options = {}) ⇒ Object
-
#to_time_zone_select_tag(priority_zones, options, html_options) ⇒ Object
-
#value(object) ⇒ Object
-
#value_before_type_cast(object) ⇒ Object
#collection_select, #grouped_collection_select, #grouped_options_for_select, #option_groups_from_collection_for_select, #options_for_select, #options_from_collection_for_select, #select, #time_zone_options_for_select, #time_zone_select
Methods included from TextHelper
#concat, #current_cycle, #cycle, #excerpt, #highlight, #pluralize, #reset_cycle, #safe_concat, #simple_format, #truncate, #word_wrap
Methods included from TagHelper
#cdata_section, #content_tag, #escape_once, #tag
#capture, #content_for, #content_for?, #flush_output_buffer, #provide, #with_output_buffer
#sanitize, #sanitize_css, #strip_links, #strip_tags
#error_message, #error_wrapping, #tag
#button_tag, #check_box_tag, #email_field_tag, #field_set_tag, #file_field_tag, #form_tag, #hidden_field_tag, #image_submit_tag, #label_tag, #number_field_tag, #password_field_tag, #radio_button_tag, #range_field_tag, #search_field_tag, #select_tag, #submit_tag, #telephone_field_tag, #text_area_tag, #text_field_tag, #url_field_tag, #utf8_enforcer_tag
Methods included from UrlHelper
#_routes_context, #button_to, #current_page?, #link_to, #link_to_if, #link_to_unless, #link_to_unless_current, #mail_to, #url_for, #url_options
#url_for, #url_options
#polymorphic_path, #polymorphic_url
#to_date_select_tag, #to_datetime_select_tag, #to_time_select_tag
Constructor Details
#initialize(object_name, method_name, template_object, object = nil) ⇒ InstanceTag
Returns a new instance of InstanceTag.
982
983
984
985
986
987
988
989
|
# File 'lib/action_view/helpers/form_helper.rb', line 982
def initialize(object_name, method_name, template_object, object = nil)
@object_name, @method_name = object_name.to_s.dup, method_name.to_s.dup
@template_object = template_object
@object_name.sub!(/\[\]$/,"") || @object_name.sub!(/\[\]\]$/,"]")
@object = retrieve_object(object)
@auto_index = retrieve_autoindex(Regexp.last_match.pre_match) if Regexp.last_match
end
|
Instance Attribute Details
#method_name ⇒ Object
Returns the value of attribute method_name.
976
977
978
|
# File 'lib/action_view/helpers/form_helper.rb', line 976
def method_name
@method_name
end
|
#object ⇒ Object
Returns the value of attribute object.
976
977
978
|
# File 'lib/action_view/helpers/form_helper.rb', line 976
def object
@object
end
|
#object_name ⇒ Object
Returns the value of attribute object_name.
976
977
978
|
# File 'lib/action_view/helpers/form_helper.rb', line 976
def object_name
@object_name
end
|
Class Method Details
.check_box_checked?(value, checked_value) ⇒ Boolean
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
|
# File 'lib/action_view/helpers/form_helper.rb', line 1165
def check_box_checked?(value, checked_value)
case value
when TrueClass, FalseClass
value
when NilClass
false
when Integer
value != 0
when String
value == checked_value
when Array
value.include?(checked_value)
else
value.to_i != 0
end
end
|
1182
1183
1184
|
# File 'lib/action_view/helpers/form_helper.rb', line 1182
def radio_button_checked?(value, checked_value)
value.to_s == checked_value.to_s
end
|
.value(object, method_name) ⇒ Object
1153
1154
1155
|
# File 'lib/action_view/helpers/form_helper.rb', line 1153
def value(object, method_name)
object.send method_name if object
end
|
.value_before_type_cast(object, method_name) ⇒ Object
1157
1158
1159
1160
1161
1162
1163
|
# File 'lib/action_view/helpers/form_helper.rb', line 1157
def value_before_type_cast(object, method_name)
unless object.nil?
object.respond_to?(method_name + "_before_type_cast") ?
object.send(method_name + "_before_type_cast") :
object.send(method_name)
end
end
|
Instance Method Details
#retrieve_autoindex(pre_match) ⇒ Object
1135
1136
1137
1138
1139
1140
1141
1142
|
# File 'lib/action_view/helpers/form_helper.rb', line 1135
def retrieve_autoindex(pre_match)
object = self.object || @template_object.instance_variable_get("@#{pre_match}")
if object && object.respond_to?(:to_param)
object.to_param
else
raise ArgumentError, "object[] naming but object param and @object var don't exist or don't respond to to_param: #{object.inspect}"
end
end
|
#retrieve_object(object) ⇒ Object
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
|
# File 'lib/action_view/helpers/form_helper.rb', line 1124
def retrieve_object(object)
if object
object
elsif @template_object.instance_variable_defined?("@#{@object_name}")
@template_object.instance_variable_get("@#{@object_name}")
end
rescue NameError
nil
end
|
#to_boolean_select_tag(options = {}) ⇒ Object
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
|
# File 'lib/action_view/helpers/form_helper.rb', line 1107
def to_boolean_select_tag(options = {})
options = options.stringify_keys
add_default_name_and_id(options)
value = value(object)
tag_text = "<select"
tag_text << tag_options(options)
tag_text << "><option value=\"false\""
tag_text << " selected" if value == false
tag_text << ">False</option><option value=\"true\""
tag_text << " selected" if value
tag_text << ">True</option></select>"
end
|
#to_check_box_tag(options = {}, checked_value = "1", unchecked_value = "0") ⇒ Object
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
|
# File 'lib/action_view/helpers/form_helper.rb', line 1085
def to_check_box_tag(options = {}, checked_value = "1", unchecked_value = "0")
options = options.stringify_keys
options["type"] = "checkbox"
options["value"] = checked_value
if options.has_key?("checked")
cv = options.delete "checked"
checked = cv == true || cv == "checked"
else
checked = self.class.check_box_checked?(value(object), checked_value)
end
options["checked"] = "checked" if checked
if options["multiple"]
add_default_name_and_id_for_value(checked_value, options)
options.delete("multiple")
else
add_default_name_and_id(options)
end
hidden = unchecked_value ? tag("input", "name" => options["name"], "type" => "hidden", "value" => unchecked_value, "disabled" => options["disabled"]) : ""
checkbox = tag("input", options)
(hidden + checkbox).html_safe
end
|
#to_collection_select_tag(collection, value_method, text_method, options, html_options) ⇒ Object
597
598
599
600
601
602
|
# File 'lib/action_view/helpers/form_options_helper.rb', line 597
def to_collection_select_tag(collection, value_method, text_method, options, html_options)
selected_value = options.has_key?(:selected) ? options[:selected] : value(object)
select_content_tag(
options_from_collection_for_select(collection, value_method, text_method, :selected => selected_value, :disabled => options[:disabled]), options, html_options
)
end
|
#to_content_tag(tag_name, options = {}) ⇒ Object
1120
1121
1122
|
# File 'lib/action_view/helpers/form_helper.rb', line 1120
def to_content_tag(tag_name, options = {})
content_tag(tag_name, value(object), options)
end
|
#to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options) ⇒ Object
604
605
606
607
608
|
# File 'lib/action_view/helpers/form_options_helper.rb', line 604
def to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
select_content_tag(
option_groups_from_collection_for_select(collection, group_method, group_label_method, option_key_method, option_value_method, value(object)), options, html_options
)
end
|
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
|
# File 'lib/action_view/helpers/form_helper.rb', line 1035
def to_input_field_tag(field_type, options = {})
options = options.stringify_keys
options["size"] = options["maxlength"] || DEFAULT_FIELD_OPTIONS["size"] unless options.key?("size")
options = DEFAULT_FIELD_OPTIONS.merge(options)
if field_type == "hidden"
options.delete("size")
end
options["type"] ||= field_type
options["value"] = options.fetch("value"){ value_before_type_cast(object) } unless field_type == "file"
options["value"] &&= ERB::Util.html_escape(options["value"])
add_default_name_and_id(options)
tag("input", options)
end
|
#to_label_tag(text = nil, options = {}, &block) ⇒ Object
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
|
# File 'lib/action_view/helpers/form_helper.rb', line 991
def to_label_tag(text = nil, options = {}, &block)
options = options.stringify_keys
tag_value = options.delete("value")
name_and_id = options.dup
if name_and_id["for"]
name_and_id["id"] = name_and_id["for"]
else
name_and_id.delete("id")
end
add_default_name_and_id_for_value(tag_value, name_and_id)
options.delete("index")
options.delete("namespace")
options["for"] ||= name_and_id["id"]
if block_given?
@template_object.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
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
content ||= if object && object.class.respond_to?(:human_attribute_name)
object.class.human_attribute_name(method_name)
end
content ||= method_name.humanize
label_tag(name_and_id["id"], content, options)
end
end
|
#to_number_field_tag(field_type, options = {}) ⇒ Object
1049
1050
1051
1052
1053
1054
1055
1056
1057
|
# File 'lib/action_view/helpers/form_helper.rb', line 1049
def to_number_field_tag(field_type, options = {})
options = options.stringify_keys
options['size'] ||= nil
if range = options.delete("in") || options.delete("within")
options.update("min" => range.min, "max" => range.max)
end
to_input_field_tag(field_type, options)
end
|
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
|
# File 'lib/action_view/helpers/form_helper.rb', line 1059
def to_radio_button_tag(tag_value, options = {})
options = DEFAULT_RADIO_OPTIONS.merge(options.stringify_keys)
options["type"] = "radio"
options["value"] = tag_value
if options.has_key?("checked")
cv = options.delete "checked"
checked = cv == true || cv == "checked"
else
checked = self.class.radio_button_checked?(value(object), tag_value)
end
options["checked"] = "checked" if checked
add_default_name_and_id_for_value(tag_value, options)
tag("input", options)
end
|
#to_select_tag(choices, options, html_options) ⇒ Object
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
|
# File 'lib/action_view/helpers/form_options_helper.rb', line 579
def to_select_tag(choices, options, html_options)
selected_value = options.has_key?(:selected) ? options[:selected] : value(object)
choices = choices.to_a if choices.is_a?(Range)
if !choices.empty? && choices.first.respond_to?(:last) && Array === choices.first.last
option_tags = grouped_options_for_select(choices, :selected => selected_value, :disabled => options[:disabled])
else
option_tags = options_for_select(choices, :selected => selected_value, :disabled => options[:disabled])
end
select_content_tag(option_tags, options, html_options)
end
|
#to_text_area_tag(options = {}) ⇒ Object
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
|
# File 'lib/action_view/helpers/form_helper.rb', line 1074
def to_text_area_tag(options = {})
options = DEFAULT_TEXT_AREA_OPTIONS.merge(options.stringify_keys)
add_default_name_and_id(options)
if size = options.delete("size")
options["cols"], options["rows"] = size.split("x") if size.respond_to?(:split)
end
content_tag("textarea", options.delete('value') || value_before_type_cast(object), options)
end
|
#to_time_zone_select_tag(priority_zones, options, html_options) ⇒ Object
610
611
612
613
614
|
# File 'lib/action_view/helpers/form_options_helper.rb', line 610
def to_time_zone_select_tag(priority_zones, options, html_options)
select_content_tag(
time_zone_options_for_select(value(object) || options[:default], priority_zones, options[:model] || ActiveSupport::TimeZone), options, html_options
)
end
|
#value(object) ⇒ Object
1144
1145
1146
|
# File 'lib/action_view/helpers/form_helper.rb', line 1144
def value(object)
self.class.value(object, @method_name)
end
|
#value_before_type_cast(object) ⇒ Object
1148
1149
1150
|
# File 'lib/action_view/helpers/form_helper.rb', line 1148
def value_before_type_cast(object)
self.class.value_before_type_cast(object, @method_name)
end
|