我使用的是 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'

来自: stackoverflow.com