我使用的是 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>'
我的控制器操作正在运行,并且设置为不渲染任何内容:
respond_to do |format|
format.all { render :nothing => true, :status => 200 }
end
但是当我单击该链接时,我的浏览器会下载一个名为"resend_confirm_email"的空文本文件。
是什么赋予了?
答案
UPDATE: This is an old answer for legacy Rails versions. For Rails 4+, see William Denniss’ post below.
在我看来,响应的内容类型不正确,或者在您的浏览器中没有正确解释。
如果除此之外还有什么text/html
,您可以尝试像这样手动设置内容类型:
render :nothing => true, :status => 200, :content_type => 'text/html'