Reinstalación de la aplicación Rails en un servidor nuevo. Parte de la aplicación puede bifurcarse en una de dos direcciones según el botón que el usuario seleccione. Esta parte no funciona, y cuando miro el registro veo los valores que di el formulario, excepto para la porción commit
del hash de parámetros. Parece que esta es la razón por la que la aplicación no funciona como se esperaba (dado que no hay nada en params[:commit]
, pero no tengo idea de por qué no se transfirió la confirmación, la solicitud es definitivamente una solicitud POST y todos los demás parámetros están ahí.Rails no pasa el parámetro del botón "confirmar"
Respuesta
tenía un problema de simular con una función de desactivación de botones-en-presentar. Lo solucionamos agregando un campo de entrada oculto con el mismo nombre y valor antes de enviar el formulario.
function disableButtonAndSubmit()
{
var input = $("<input type='hidden' />").attr("name", $(this)[0].name).attr("value", $(this)[0].value);
$(this).closest('form').append(input);
$(this).attr('disabled', 'disabled').html('Loading…');
$(this).closest('form').submit();
}
$('#somewhere button').click(disableButtonAndSubmit);
Intenté algo así como hace un rato, cuando hay inconsistencia en la forma en que diferentes navegadores pasarían el valor de un botón de enviar en un formulario. Encontré que la única solución práctica era tener javascript en el botón para establecer un campo oculto, y utilizar este valor en vez
, aquí tienes mi código para diferenciar entre una guardar y salir, que va por un lado, y guardar y continuar el cual vaya por otro:.
<%= hidden_field_tag 'step_commit', '' %>
<span style="float:left;">
<%=submit_tag 'Cancel', :name=>'cancel', :onclick=>"javascript:location.href='/';return false;" %>
<%=submit_tag 'Save and Exit', :name=>'exit', :onclick=>"javascript:$('step_commit').value='exit';" %>
</span>
<span style="float:right;">
<%=submit_tag 'Save and Continue', :name=>'continue', :onclick=>"javascript:$('step_commit').value='continue';" %>
</span>
Lo raro es que funcionaba bien en el servidor anterior, pero ahora lo movimos y se detuvo. –
Comprueba que tu entrada de envío se llame commit o que no se envíe su etiqueta.
el código HTML resultante debe ser:
<input type="submit" name="commit" label="...>
Me encontré con este mismo problema, y las respuestas aquí me orientaron en la dirección correcta. Sin embargo, en lugar de las sugerencias de agregar entradas de formularios ocultos o renunciar al bloque de envío doble, simplemente puede agregar una función setTimeout en su bloque de envío doble con un tiempo de espera de 1 milisegundo, lo que permite que el bloque de envío doble funcione sin impedir la presentación del botón.
Esa fue la solución que necesitaba. ¡Gracias! –
Sólo tiene que añadir name: "commit", value: "Save"
a su formulario botón de envío:
form_for @object do |f|
...
f.button :submit, "Save", name: "commit", value:"Save"
end
y entonces tendrá params[:commit]
es igual a "Save"
en el controlador.
- 1. F # parámetro que pasa
- 2. parámetro gsp que pasa desde el controlador
- 3. El botón jqgrid refresh grid no pasa los filtros
- 4. Confirmar el botón Atrás del navegador si no, quédese en la página
- 5. Parámetro que pasa con initWithNibName:
- 6. ¿Pasa una clase como parámetro?
- 7. ¿Cómo se pasa un Container.DataItem como parámetro?
- 8. C++ diferencia entre ** y * & en el parámetro que pasa
- 9. asp.net mvc enrutamiento cuando se pasa el parámetro contiene puntos
- 10. parámetro URL que pasa con laravel
- 11. WP7: ¿Pasa el parámetro a la página nueva?
- 12. parámetro persistente en el controlador de Rails
- 13. casilla Sí o No confirmar usando jQuery
- 14. Confirmar el registro
- 15. PyCharm y control de origen, el directorio .idea, confirmar o no confirmar, esa es la pregunta
- 16. Añadir parámetro para evento de clic del botón
- 17. Patrón de módulo: ¿por qué se pasa JQuery como parámetro?
- 18. Javascript parámetro de la función anónima que pasa
- 19. jQuery Confirmar el cuadro de diálogo en el botón ASP.NET OnClientClick
- 20. HttpWebRequest no pasa credenciales
- 21. Cómo no usar el parámetro de acción Rails en el controlador
- 22. Quiero confirmar el tamaño del montón que está usando tomcat
- 23. Agregar el parámetro Hash en el URL Rails Rutas
- 24. jQuery submit() no incluye el botón enviado
- 25. TortoiseSVN no puede confirmar, dice "prohibido por el servidor"
- 26. Parámetro que pasa de PowerShell al ejecutable que tiene interruptores
- 27. Parámetro adicional en form_for in Rails
- 28. ¿Cómo se pasa un parámetro al operador IN en NHibernate?
- 29. C# El parámetro del método especificado no puede contener nulos
- 30. El directorio no existe - Nombre del parámetro: directorioVirtualPath
¿Ya ha encontrado una solución? Tengo un problema similar desde que actualicé mi plantilla con una de mi diseñador web. Use una plantilla 'básica' y todo es archivo, pero use la plantilla de diseñadores (HTML válido) y no obtengo valores de compromiso. –
En mi caso, fue debido a tener una ventana emergente jQuery antes de enviar el formulario. –
Gracias por ese comentario Wayne, eso me avisó de lo que causó esto para mí. En mi caso, teníamos un enlace genérico jQuery submit event que deshabilitaba el botón enviar (para evitar los envíos dobles). Eliminar eso de esta forma solucionó las cosas. – chrisrbailey