【发布时间】:2015-11-09 12:24:05
【问题描述】:
如果用户无权访问页面,我想返回相同的通用无效页面。我想从几个不同的视图中使用这个无效页面。
如何在不在每个视图中创建它们的情况下呈现此页面?
是的,我可以创建一些其他控制器并重定向到这些页面,但我希望浏览器中的 url 与该人试图访问的页面相同。我想渲染页面而不是重定向。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4
如果用户无权访问页面,我想返回相同的通用无效页面。我想从几个不同的视图中使用这个无效页面。
如何在不在每个视图中创建它们的情况下呈现此页面?
是的,我可以创建一些其他控制器并重定向到这些页面,但我希望浏览器中的 url 与该人试图访问的页面相同。我想渲染页面而不是重定向。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4
您将创建一个静态页面,我们将其命名为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 阅读更多内容。
【讨论】: