如果用户无权访问某个页面,我想返回相同的通用无效页面。我想从几个不同的视图中使用这个无效页面。
如何在不在每个视图中创建此页面的情况下渲染此页面?
是的,我可以创建一些其他控制器并重定向到这些页面,但我希望浏览器中的URL与该人尝试访问的页面相同。我想渲染页面不重定向。
答案 0 :(得分:1)
您要创建一个静态页面,我们将其调用invalid.html.erb
并将其放在您的static_pages
目录中(或者您为应用维护静态页面)。确保在routes.rb
中为其创建路线:
get 'static_pages/invalid' => 'static_pages#invalid'
然后,在您的application_controller.rb
文件中,您将使用rescue_from帮助程序调用自定义方法来处理错误:
rescue_from User::NotAuthorized, :with => :invalid
def invalid
redirect_to 'static_pages_invalid_path'
end
几乎就是这样。阅读更多Ruby Guides。