从视图设置标题状态

时间:2016-10-25 01:38:55

标签: ruby-on-rails ruby view http-status-codes

我有一个视图页面errors/401。这是专门用于显示401状态的错误,我总是希望呈现状态为401的页面。在呈现该页面的控制器中,我写的像

render "error/401", status: 401

我觉得这是多余的。由于此页面始终以特定状态呈现,因此我想在视图页面中指定状态,而不是在控制器中提及它,并获得相同的结果。我只想写:

render "error/401"

这可能吗?

1 个答案:

答案 0 :(得分:2)

  

我想在视图页面中指定状态,而不是在控制器中提及它

它不属于您的观点。模板应输出字符,而不是HTTP状态代码。

  

我觉得这是多余的。

是的。 Rails使用异常来发出信号并处理这些错误,例如:丢失的记录会导致ActiveRecord::RecordNotFound异常,从而呈现404页面。

您可以通过定义NotAuthorisedApplicationController传递的class ApplicationController < ActionController::Base class NotAuthorised < StandardError; end rescue_from NotAuthorised do |exception| render 'error/401', status: 401 end end 错误来执行相同的操作:

class FooController < ApplicationController
  def index
    raise NotAuthorised
  end
end

来自另一个控制器:

function(data)