Генерация входного идентификатора с моделью ActiveRecord

Как Вы генерируете вход id атрибут, учитывая модель? Например, если у меня есть модель Person с a first_name атрибут, помощник формы распечатывает текстовое поле с этим HTML:

<input type="text" id="person_first_name" />

Как я могу генерировать это person_first_name от некоторого другого места в коде (как в контроллере или некотором месте)?

1
задан swilliams 10 June 2010 в 19:51
поделиться

2 ответа

В итоге я последовал совету 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
1
ответ дан 2 September 2019 в 23:50
поделиться

Хорошая привычка - время от времени копаться в коде рельсов :)

Эти значения генерируются частными методами внутри класса nodoc-ed InstanceTag . Вы можете увидеть источники здесь . Интересующие нас методы: add_default_name_and_id , tag_id и, возможно, tag_id_with_index . Ничего особенного.

1
ответ дан 2 September 2019 в 23:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: