2011-04-11 19 views
68

Tengo un form_for escrito de la siguiente manera:Carriles no texto editable campo

<div class="field"> 
    <%= location.label :city %> 
    <%= location.text_field :city, :disabled=>true%> 
</div> 
<div class="field"> 
    <%= location.label :country %> 
    <%= location.text_field :country, :disabled=>true%> 
</div> 

Como se puede ver el campo de texto 2 se desactivan porque están autorrellenará por una función de jQuery y no quiero dejar que el el usuario los maneja. ¡El problema es que de esta manera, la vista no pasa esos parámetros al controlador porque están deshabilitados! ¿Hay alguna otra manera de pasar text_field no se puede editar con el controlador, teniendo cuidado de que no quiero utilizar campo oculto porque quiero mostrar los resultados al usuario dentro de un cuadro de texto

TNX

+0

con ¿no habilita los campos con jquery antes del envío? – apneadiving

+0

Lo estoy haciendo ... ¿no sabes si hay una manera más limpia de hacerlo? – Joe

Respuesta

174

Hacer ¡solo de leer!

<%= location.text_field :country,:readonly => true%> 
+9

Mantente al tanto con esto. La [especificación W3 para formularios] (http://www.w3.org/TR/html4/interact/forms.html#h-17.12.1) distingue 'disabled' y' read-only' y deja en claro que disabled las entradas no se deben enviar con los datos del formulario. –

+0

¡Gracias! Había olvidado que incluso era una opción. – RyanJM

+0

Lo mismo aquí, también me olvidé de esta opción .. :) thnx Krunal – RAJ

1

El truco es usar "objeto" junto con una etiqueta para cualquier cosa que no desee cambiar. Aquí es cómo debe codificarlo:

<%= location.label(:country, f.object.country) %>