【问题标题】:How to stop rails_admin from matching all routes beginning with 'admin'?如何阻止 rails_admin 匹配以“admin”开头的所有路由?
【发布时间】:2015-10-01 06:38:41
【问题描述】:

我的 rails 4.2 应用程序有这样的 routes.rb 文件

mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

get '/:id' => 'users#show', as: 'profile'

我现在面临的问题是我可以有一条路线

example.com/admin
example.com/adminlogs
example.com/adminlinks
example.com/admin-john

等等,都被重定向到admin。

我需要阻止 rails_admin 匹配以 'admin' 开头的所有路由,但允许 /admin 重定向到 rails_admin?

【问题讨论】:

    标签: ruby-on-rails routes rails-admin


    【解决方案1】:

    这就是 RailsAdmin 路由的行为方式。但是如果你有一些特定的路由想要匹配,你可以把它们放在 RailsAdmin 行之前。即:

    get '/adminlogs', to: 'some_controller#some_action'
    mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
    get '/:id' => 'users#show', as: 'profile'
    

    【讨论】:

    • 感谢 nick,但列表可能无穷无尽(随着应用程序的增长),因此我无法在 rails_admin 挂载之前将它们全部添加。
    • 你不能控制创建什么样的 url 吗?例如,使用正则表达式检查它们是否以“admin”开头,然后不允许保存。
    • 我把它留作最后的手段。
    • 为什么 rails admin 必须用尽所有以 'admin' 开头的路由?你能指出任何文档说明它为什么会这样吗?
    • 看看他们的 github wiki 的路由部分。为什么检查用户创建的网址是您最后的手段?不,在您的情况下,这比更改 rails admin gem 更可取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2017-11-08
    相关资源
    最近更新 更多