Ruby on rails 从视图设置标题状态
我有一个查看页面Ruby on rails 从视图设置标题状态,ruby-on-rails,ruby,view,http-status-codes,Ruby On Rails,Ruby,View,Http Status Codes,我有一个查看页面错误/401。这是专门用于显示401状态的错误,我总是希望呈现401状态的页面。在呈现该页面的控制器中,我编写 render "error/401", status: 401 我觉得这是多余的。由于此页面始终以特定状态呈现,因此我希望在视图页面中指定状态,更不用说在控制器中指定状态,并获得相同的结果。我只想写: render "error/401" 这可能吗 我想在视图页面中指定状态,更不用说在控制器中了 这不属于你的观点。模板应该输出字符,而不是HTTP状态代码 我觉得这是
错误/401
。这是专门用于显示401状态的错误,我总是希望呈现401状态的页面。在呈现该页面的控制器中,我编写
render "error/401", status: 401
我觉得这是多余的。由于此页面始终以特定状态呈现,因此我希望在视图页面中指定状态,更不用说在控制器中指定状态,并获得相同的结果。我只想写:
render "error/401"
这可能吗
我想在视图页面中指定状态,更不用说在控制器中了
这不属于你的观点。模板应该输出字符,而不是HTTP状态代码
我觉得这是多余的
是的。Rails使用异常来发出信号并处理此类错误,例如,丢失的记录会导致出现ActiveRecord::RecordNotFound
异常,从而呈现404页面
您可以通过在应用程序控制器中定义一个notauthorized
错误来执行相同的操作:
class ApplicationController < ActionController::Base
class NotAuthorised < StandardError; end
rescue_from NotAuthorised do |exception|
render 'error/401', status: 401
end
end
class ApplicationController
从另一个控制器:
class FooController < ApplicationController
def index
raise NotAuthorised
end
end
class FooController
我不确定这是否可行,但因为您正在使用controller/view返回自定义错误页。。rails控制器总是将状态:200
添加到您的响应头中,除非您另外提到否,因为您的服务器处理请求/响应,在本例中,请求/响应就是控制器。控制器应该负责您的响应和响应的请求头,其中包括状态。在你看来,你不应该这样做。也就是说,您可以将此文件创建为public/401.html,而您只需说status:401
web服务器将为public/401.html提供服务。然而,这个401.html将是一个静态html文件,无法解析其中的任何ruby代码。