Estoy en Rails 2.3.3 y necesito crear un enlace que envíe una solicitud de publicación.
Tengo uno que se parece a esto:
= link_to('Resend Email',
{:controller => 'account', :action => 'resend_confirm_email'},
{:method => :post} )
Lo que hace que el comportamiento de JavaScript sea apropiado en el enlace:
<a href="/account/resend_confirm_email"
onclick="var f = document.createElement('form');
f.style.display = 'none';
this.parentNode.appendChild(f);
f.method = 'POST';
f.action = this.href;
var s = document.createElement('input');
s.setAttribute('type', 'hidden');
s.setAttribute('name', 'authenticity_token');
s.setAttribute('value', 'EL9GYgLL6kdT/eIAzBritmB2OVZEXGRytPv3lcCdGhs=');
f.appendChild(s);
f.submit();
return false;">Resend Email</a>'
La acción de mi controlador está funcionando y está configurada para no representar nada:
respond_to do |format|
format.all { render :nothing => true, :status => 200 }
end
Pero cuando hago clic en el enlace, mi navegador descarga un archivo de texto vacío llamado "resend_confirm_email".
¿Lo que da?
ruby-on-rails
rest
link-to
user225643
fuente
fuente
Respuestas:
ACTUALIZACIÓN: Esta es una respuesta antigua para las versiones heredadas de Rails. Para Rails 4+, consulte la publicación de William Denniss a continuación.
Me parece que el tipo de contenido de la respuesta no es correcto o no se interpreta correctamente en su navegador. Verifique sus encabezados http para ver qué tipo de contenido es la respuesta.
Si se trata de cualquier otra cosa
text/html
, puede intentar configurar manualmente el tipo de contenido de esta manera:fuente
Desde Rails 4,
head
ahora se prefiere arender :nothing
. 1se prefiere sobre
Técnicamente son iguales. Si observa la respuesta para usar cURL, verá:
Sin embargo, llamar
head
proporciona una alternativa más obvia a llamarrender :nothing
porque ahora es explícito que solo está generando encabezados HTTP.fuente
head 200
da como resultado una304
respuesta para mí (en rieles 4.1.6). La consola muestra el código de estado 200, pero Chrome (panel de red) muestra 304. Elrender :nothing => true
enfoque funcionó.