Ruby Rails: получить идентификатор поля ввода формы - PullRequest
5 голосов
/ 27 декабря 2010

Я новичок в Ruby и в Ruby on Rails.Я пытаюсь найти способ получить идентификатор, используемый для поля ввода, созданного помощником hidden_field, потому что мне нужно добавить некоторый javascript, который использует jquery для получения поля ввода по идентификатору.

У меня есть две модели> Персона и адрес.Person has_one Адрес и адрес имеют свойство zip_code.

Я использую следующий код для создания формы со скрытыми полями:

<%= form.fields_for :address do |form| %>

     <%= form.hidden_field :zip_code %>

<% end %>

, которая генерирует следующий HTML:

<input class="text" id="person_address_attributes_zip_code" name="person[address_attributes][zip_code]" type="hidden" />

Есть ли какой-либо метод или помощник, который дает мне идентификатор, используемый для поля данного свойства?Например, мне нужно знать, что для: zip_code сгенерированный идентификатор был «person_address_attributes_zip_code».

Большое спасибо заранее.Bruno

Ответы [ 2 ]

5 голосов
/ 24 января 2013

Конструктор форм имеет доступ к имени объекта, которое вы можете использовать для получения сгенерированного идентификатора, если вы знаете имя поля. Я проверял это в Rails 3:

<%= form.fields_for :addresses do |form|%>  
  <%= "#{form.object_name}[zip_code]".gsub(/(\])?\[/, "_").chop %>
  <%= form.text_field :zip_code %>  
<% end %>
1 голос
/ 27 декабря 2010

Самый простой способ - заставить идентификатор быть таким, какой вы хотите, например:

<%= form.hidden_field :zip_code, :id => 'zip_code' %>

Поле имени используется в параметрах запроса, поэтому не имеет значения, какое поле id установлено.

Методы определения идентификатора в Rails 3 находятся в actionpack / lib / action_view / helpers / form_helper.rb, в основном в модуле InstanceTag. В большинстве случаев это изменения в основном названии модели, очищенные для удаления специальных символов, за которыми следует подчеркивание, после которого следует очищенное имя поля, но вложенные модели и атрибуты добавляют дополнительную сложность.

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