我有一个视图页面errors/401
。这是专门用于显示401状态的错误,我总是希望呈现状态为401的页面。在呈现该页面的控制器中,我写的像
render "error/401", status: 401
我觉得这是多余的。由于此页面始终以特定状态呈现,因此我想在视图页面中指定状态,而不是在控制器中提及它,并获得相同的结果。我只想写:
render "error/401"
这可能吗?
答案 0 :(得分:2)
我想在视图页面中指定状态,而不是在控制器中提及它
它不属于您的观点。模板应输出字符,而不是HTTP状态代码。
我觉得这是多余的。
是的。 Rails使用异常来发出信号并处理这些错误,例如:丢失的记录会导致ActiveRecord::RecordNotFound
异常,从而呈现404页面。
您可以通过定义NotAuthorised
中ApplicationController
传递的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)