2010-12-27 11 views
5

Soy nuevo en Ruby y Ruby on Rails a. Estoy tratando de encontrar una forma de obtener la identificación utilizada en un campo de entrada creado por el ayudante hidden_field, porque necesito agregar un javascript que use jquery para obtener el campo de entrada por id.Rails Ruby: recuperar el id del campo de entrada de forma

que tienen dos modelos> Persona y Dirección. Persona has_one Dirección y dirección tiene una propiedad zip_code.

estoy usando el siguiente código para generar un formulario con campos ocultos:

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

    <%= form.hidden_field :zip_code %> 

<% end %> 

esto genera el código HTML siguiente:

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

¿Hay algún método o ayudante que me da la Identificación utilizado para el campo de una propiedad determinada? Por ejemplo, necesito saberlo para: zip_code el ID generado era "person_address_attributes_zip_code".

Muchas gracias de antemano. Bruno

Respuesta

1

La forma más sencilla sería la de obligar a que el id sea lo que quiera, por ejemplo:

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

El campo de nombre se utiliza en los parámetros de la petición por lo que no importa lo que el campo id se establece en.

Los métodos para determinar la identificación en Rails 3 están en actionpack/lib/action_view/helpers/form_helper.rb, principalmente en el módulo InstanceTag. La mayoría son variaciones en el nombre del modelo principal sanitizado para eliminar caracteres especiales seguidos de guión bajo seguido del nombre de campo desinfectado, pero los modelos y atributos anidados añaden complejidad adicional.

+0

Gracias, estoy de acuerdo en que es mucho más fácil la forma de sugerir. – Bruno

+3

¿hay algún método auxiliar que pueda utilizarse para obtener estos identificadores generados? en lugar de tener que establecer identificadores individuales? – freethinker

5

El constructor de la forma tiene acceso al nombre del objeto, que se podría utilizar para obtener el identificador generado, dado que se conoce el nombre del campo. Probé esto en Rails 3:

<%= form.fields_for :addresses do |form|%> 
    <%= "#{form.object_name}[zip_code]".gsub(/(\])?\[/, "_").chop %> 
    <%= form.text_field :zip_code %> 
<% end %> 
Cuestiones relacionadas