【问题标题】:Redirect root to /admin将根目录重定向到 /admin
【发布时间】:2015-05-12 09:32:59
【问题描述】:

我有一个非常奇怪的问题,有一段时间我可以正常工作,但现在总是失败。

我希望 /admin 后缀成为我的应用程序的根页面。

我试过了:

root to: redirect('/admin')
  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

这个:

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
  get '/', to: redirect('/admin')

还有这个(没有运气):

  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)
  root to: 'admin/dashboard#index'

我认为最后一个选项是 sn-p 昨天工作,但我不确定。

编辑**添加了耙子路线**

Prefix Verb       URI Pattern                               Controller#Action
                          root GET        /                                         admin/dashboard#index
                    admin_root GET        /admin(.:format)                          admin/dashboard#index
batch_action_admin_admin_users POST       /admin/admin_users/batch_action(.:format) admin/admin_users#batch_action
             admin_admin_users GET        /admin/admin_users(.:format)              admin/admin_users#index
                               POST       /admin/admin_users(.:format)              admin/admin_users#create
          new_admin_admin_user GET        /admin/admin_users/new(.:format)          admin/admin_users#new
         edit_admin_admin_user GET        /admin/admin_users/:id/edit(.:format)     admin/admin_users#edit
              admin_admin_user GET        /admin/admin_users/:id(.:format)          admin/admin_users#show
                               PATCH      /admin/admin_users/:id(.:format)          admin/admin_users#update
                               PUT        /admin/admin_users/:id(.:format)          admin/admin_users#update
                               DELETE     /admin/admin_users/:id(.:format)          admin/admin_users#destroy
      batch_action_admin_cases POST       /admin/cases/batch_action(.:format)       admin/cases#batch_action
                   admin_cases GET        /admin/cases(.:format)                    admin/cases#index
                               POST       /admin/cases(.:format)                    admin/cases#create
                new_admin_case GET        /admin/cases/new(.:format)                admin/cases#new
               edit_admin_case GET        /admin/cases/:id/edit(.:format)           admin/cases#edit
                    admin_case GET        /admin/cases/:id(.:format)                admin/cases#show
                               PATCH      /admin/cases/:id(.:format)                admin/cases#update
                               PUT        /admin/cases/:id(.:format)                admin/cases#update
                               DELETE     /admin/cases/:id(.:format)                admin/cases#destroy
               admin_dashboard GET        /admin/dashboard(.:format)                admin/dashboard#index
       batch_action_admin_tags POST       /admin/tags/batch_action(.:format)        admin/tags#batch_action
                    admin_tags GET        /admin/tags(.:format)                     admin/tags#index
                               POST       /admin/tags(.:format)                     admin/tags#create
                 new_admin_tag GET        /admin/tags/new(.:format)                 admin/tags#new
                edit_admin_tag GET        /admin/tags/:id/edit(.:format)            admin/tags#edit
                     admin_tag GET        /admin/tags/:id(.:format)                 admin/tags#show
                               PATCH      /admin/tags/:id(.:format)                 admin/tags#update
                               PUT        /admin/tags/:id(.:format)                 admin/tags#update
                               DELETE     /admin/tags/:id(.:format)                 admin/tags#destroy
                admin_comments GET        /admin/comments(.:format)                 admin/comments#index
                               POST       /admin/comments(.:format)                 admin/comments#create
                 admin_comment GET        /admin/comments/:id(.:format)             admin/comments#show
        new_admin_user_session GET        /admin/login(.:format)                    active_admin/devise/sessions#new
            admin_user_session POST       /admin/login(.:format)                    active_admin/devise/sessions#create
    destroy_admin_user_session DELETE|GET /admin/logout(.:format)                   active_admin/devise/sessions#destroy
           admin_user_password POST       /admin/password(.:format)                 active_admin/devise/passwords#create
       new_admin_user_password GET        /admin/password/new(.:format)             active_admin/devise/passwords#new
      edit_admin_user_password GET        /admin/password/edit(.:format)            active_admin/devise/passwords#edit
                               PATCH      /admin/password(.:format)                 active_admin/devise/passwords#update
                               PUT        /admin/password(.:format)                 active_admin/devise/passwords#update 

你建议怎么做?有什么想法吗?

【问题讨论】:

  • 有管理员模式吗?
  • 我忘了说我正在使用active_admin。所以有一个模型叫做 admin_user

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 routes activeadmin


【解决方案1】:

你几乎做对了!

您将根路径设置为:root to: redirect('/admin')

这样,您还必须明确声明要路由到的路由,如下所示:match '/admin', to: 'admin/dashboard#index', via: :get

这样,你的根路径每次调用时都会自动调用后面的路由和控制器。

澄清一下,您的设置将如下所示:

TestActiveAdmin::Application.routes.draw do 
  root to: redirect('/admin')
  match '/admin', to: 'admin/dashboard#index', via: :get

  ActiveAdmin.routes(self)

  devise_for :admin_users, ActiveAdmin::Devise.config

  ...
end

然后您可以在 Rails 控制台中验证:rake routes | grep root

您应该会看到如下内容: root /admin {:controller => 'admin/dashboard, :action => 'index'

【讨论】:

  • 这不行,很奇怪。我将使用通过 rake 路线获得的路线编辑帖子...
  • 此外,“match”在开始时失败:“您不应在未指定 HTTP 方法的情况下在路由器中使用 match 方法。(RuntimeError)如果您想将您的操作公开给 GET和 POST,添加 via: [:get, :post] 选项。如果您想将您的操作公开给 GET,请在路由器中使用 get:而不是:匹配“controller#action”
  • 这是 grep 过滤器的输出: root GET / redirect(301, /admin) admin_root GET /admin(.:format) admin/dashboard#index 但是重定向不起作用...很奇怪
  • 确保重新启动服务器。我们所做的一切都没有创建admin_root 路由,因此请确保没有其他冲突代码。而不是 grepping,只需从您的应用程序目录运行 rake routes 并查看您得到的结果(重新启动后)。你应该有一个调用redirect(301, /admin)root 路由和一个调用admin/dashboard#indexadmin 路由
  • 尝试注释掉您的devise for :admin_users 行,看看是否能解决问题。您可能有命名冲突。
猜你喜欢
  • 1970-01-01
  • 2013-04-10
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多