Генерация входного идентификатора с помощью модели ActiveRecord - PullRequest
1 голос
/ 10 июня 2010

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

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

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

Ответы [ 2 ]

1 голос
/ 11 июня 2010

В итоге я последовал совету нейтрино и немного больше посмотрел на код рельсов.В итоге я вытащил пару приватных методов в классе 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 голос
/ 11 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...