Как Вы генерируете вход id
атрибут, учитывая модель? Например, если у меня есть модель Person
с a first_name
атрибут, помощник формы распечатывает текстовое поле с этим HTML:
<input type="text" id="person_first_name" />
Как я могу генерировать это person_first_name
от некоторого другого места в коде (как в контроллере или некотором месте)?
В итоге я последовал совету neutrino и посмотрел на код rails немного больше. В итоге я вытащил пару приватных методов в классе InstanceTag
и немного переместил их. Я приладил это к ActiveRecord::Base
, что, возможно, не лучшее решение, но сейчас это работает:
def create_tag_id(method_name)
object_name = ActionController::RecordIdentifier.singular_class_name(self)
"#{sanitized_object_name(object_name)}_#{sanitized_method_name(method_name.to_s)}"
end
private
def sanitized_object_name(object_name)
object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
end
def sanitized_method_name(method_name)
method_name.sub(/\?$/,"")
end
Хорошая привычка - время от времени копаться в коде рельсов :)
Эти значения генерируются частными методами внутри класса nodoc-ed InstanceTag
. Вы можете увидеть источники здесь . Интересующие нас методы: add_default_name_and_id
, tag_id
и, возможно, tag_id_with_index
. Ничего особенного.