Tengo un formulario_for escrito de la siguiente manera:
<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 puede ver, los 2 campos de texto están deshabilitados porque se rellenan automáticamente con una función jquery y no quiero que el usuario los maneje. El problema es que de esta forma, la vista no pasa esos parámetros al controlador porque están deshabilitados !!! ¿Hay alguna otra forma de pasar un campo de texto no editable al controlador, teniendo cuidado de no usar un campo oculto porque quiero mostrar los resultados al usuario dentro de un cuadro de texto?
TNX
Respuestas:
¡Haz que sea de solo lectura!
<%= location.text_field :country,:readonly => true%>
fuente
disabled
yread-only
deja en claro que las entradas deshabilitadas no deben enviarse con los datos del formulario.:disabled => true
no estaba enviando mi campo.Create
acción?readonly="readonly"
atributo de lainput
etiqueta y editar el campo de texto como desee. Si realmente necesita que esto sea seguro, elimine el campo de entrada por completo o valide la entrada del formulario en el modelo. De todos modos, esa fue una respuesta muy útil.El truco consiste en utilizar "objeto" junto con una etiqueta para cualquier cosa que no desee cambiar. Así es como debe codificarlo:
<%= location.label(:country, f.object.country) %>
fuente