Puede usar jQuery discreto y un atributo de datos.
Por ejemplo en mi aplicación tengo una forma grande con, entre otros, una "dirección" de campos en los que el usuario debe:
- escribir su dirección y luego
- conectó un "cheque" para mostrar un pequeño mapa de google para ver si la dirección que ingresó es correcta.
Después de que él es el botón "verificar" quiero volver a presentar el formulario pero con el ancor a este campo de dirección, donde se muestra el mapa.
Ésta es mi plantilla .erb:
<fieldset id="address" data-preview="<%= params[:preview] ? true : false -%>">
<legend>Write you address here, then check it</legend>
<div class="field">
<%= f.text_field :address %>
<input id="preview-button" type="submit" name="preview" value="check">
</div>
</fieldset>
Cuando se golpea el botón de verificación, se establecerá params[:preview]
.En mi controlador, la acción create
se ve así:
def create
@obj = current_user.objs.new(params[:obj])
if params[:preview]
# geocoding code, and then:
render action: "edit"
else
#...
end
end
Así que la acción de edición se debe reproducir con params[:preview]
todavía definido, y esto va a establecer el #address de campos de datos de vista previa a la verdadera. A saber, se representará esta línea de HTML:
<fieldset id="address" data-preview="true">
Ahora todo lo que tiene que hacer es obtener esa información a través de javascript y si es data-preview
true
ventana de movimiento a la ubicación #address
ancla. Aquí está mi código jQuery discreto:
$(function() {
var preview = $("#address").data('preview');
if (preview == true){
window.location = window.location.href + "#address";
};
});
Y eso es todo!
Busqué en Google esto, funcionó muy bien, ¡gracias! –
¡Muchas gracias! ¿Cómo lo encontraste? – makaroni4
Bien, gracias. No es muy elegante, ¡pero funciona genial! – mdrozdziel