Ruby on rails 3 Rails3-如何在不存在DoubleRender错误的情况下在before_过滤器中渲染403

Ruby on rails 3 Rails3-如何在不存在DoubleRender错误的情况下在before_过滤器中渲染403,ruby-on-rails-3,api,before-filter,Ruby On Rails 3,Api,Before Filter,我有一个before_过滤器,用于检查API密钥的有效性。如果密钥无效,我希望只呈现一个403响应头 在我的控制器中: before_filter :validate_api ... def validate_api if params[:api_key].present? and ApiKey.find(params[:api_key]) return true else render head :forbidden end end 问题是,我得到了一个Doubl

我有一个before_过滤器,用于检查API密钥的有效性。如果密钥无效,我希望只呈现一个403响应头

在我的控制器中:

before_filter :validate_api
...
def validate_api
  if params[:api_key].present? and ApiKey.find(params[:api_key])
    return true
  else
    render head :forbidden
  end
end
问题是,我得到了一个DoubleRender错误,大概是Rails进入动作并试图以任何方式呈现响应时。我的理解是,如果before_过滤器呈现或重定向,Rails会阻止操作的执行。不是这样吗


如何在before_筛选器中呈现仅标题的响应并阻止执行操作?

您是否尝试在else部分中返回
false

啊,等等,我知道发生了什么,您应该调用
head:planized
,因此请忽略前面的
呈现
部分。