true"返回空的纯文本文件?-6ren"> true"返回空的纯文本文件?-我使用的是 Rails 2.3.3,我需要创建一个发送 post 请求的链接。 我有一个看起来像这样的: = link_to('Resend Email', {:controller => 'ac-6ren">
gpt4 book ai didi

ruby-on-rails - "render :nothing => true"返回空的纯文本文件?

转载 作者:行者123 更新时间:2023-12-03 04:38:35 25 4
gpt4 key购买 nike

我使用的是 Rails 2.3.3,我需要创建一个发送 post 请求的链接。

我有一个看起来像这样的:

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

这使得链接上的 JavaScript 行为适当:

<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>'

我的 Controller 操作正在运行,并且设置为不渲染任何内容:

respond_to do |format|
format.all { render :nothing => true, :status => 200 }
end

但是当我单击该链接时,我的浏览器会下载一个名为“resend_confirm_email”的空文本文件。

什么给出了?

最佳答案

自 Rails 4 起,head 现在优先于 render :nothing 1

head :ok, content_type: "text/html"

# or (equivalent)

head 200, content_type: "text/html"

优先于

render nothing: true, status: :ok, content_type: "text/html"

# or (equivalent)

render nothing: true, status: 200, content_type: "text/html"

它们在技术上是相同的。如果您使用 cURL 查看响应,您将看到:

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

但是,调用 head 提供了一种比调用 render :nothing 更明显的替代方案,因为现在很明显您只是生成 HTTP header 。

<小时/>
  1. http://guides.rubyonrails.org/layouts_and_rendering.html#using-head-to-build-header-only-responses

关于ruby-on-rails - "render :nothing => true"返回空的纯文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com