Method: ActionView::Helpers::FormTagHelper#field_id
- Defined in:
- actionview/lib/action_view/helpers/form_tag_helper.rb
#field_id(object_name, method_name, *suffixes, index: nil, namespace: nil) ⇒ Object
Generate an HTML id attribute value for the given name and field combination
Return the value generated by the FormBuilder for the given attribute name.
<%= label_tag :post, :title %>
<%= text_field :post, :title, aria: { describedby: field_id(:post, :title, :error) } %>
<%= tag.span("is blank", id: field_id(:post, :title, :error) %>
In the example above, the <input type="text"> element built by the call to text_field declares an aria-describedby attribute referencing the <span> element, sharing a common id root (post_title, in this case).
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'actionview/lib/action_view/helpers/form_tag_helper.rb', line 102 def field_id(object_name, method_name, *suffixes, index: nil, namespace: nil) if object_name.respond_to?(:model_name) object_name = object_name.model_name.singular end sanitized_object_name = object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").delete_suffix("_") sanitized_method_name = method_name.to_s.delete_suffix("?") [ namespace, sanitized_object_name.presence, (index unless sanitized_object_name.empty?), sanitized_method_name, *suffixes, ].tap(&:compact!).join("_") end |