rails examples example crear ruby-on-rails rest link-to

ruby on rails - examples - "Render: nothing=> true" devuelve un archivo de texto sin formato vacĂ­o?



ruby on rails ajax example (2)

Estoy en Rails 2.3.3 y necesito hacer un enlace que envíe una solicitud posterior.

Tengo uno que se ve así:

=link_to( ''Resend Email'', {:controller => ''account'', :action => ''resend_confirm_email'' }, {:method => :post} )

Lo que hace que el comportamiento de JavaScript 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>''

Mi acción de controlador está funcionando, y configurado para no mostrar 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?


Desde Rails 4, ahora se prefiere la head sobre el render :nothing . 1

head :ok, content_type: "text/html" # or (equivalent) head 200, content_type: "text/html"

es preferido sobre

render nothing: true, status: :ok, content_type: "text/html" # or (equivalent) render nothing: true, status: 200, content_type: "text/html"

Técnicamente son lo mismo. Si miras la respuesta para usar cURL, verás:

HTTP/1.1 200 OK Connection: close Date: Wed, 1 Oct 2014 05:25:00 GMT Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 X-Runtime: 0.014297 Set-Cookie: _blog_session=...snip...; path=/; HttpOnly Cache-Control: no-cache

Sin embargo, el head llamada proporciona una alternativa más obvia que invocar el render :nothing porque ahora es explícito que solo está generando encabezados HTTP.

  1. 1

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. Comprueba dos veces tus encabezados http para ver qué tipo de contenido es la respuesta.

Si es algo más que text/html , puede intentar configurar manualmente el tipo de contenido de esta manera:

render :nothing => true, :status => 200, :content_type => ''text/html''