如何正确使用admin / route?

时间:2017-02-21 16:31:50

标签: ruby-on-rails

我正在尝试制作一个包含公共区域和管理信息中心的应用。

对于公共区域,我只使用一个名为Public的控制器,为此,它有很多视图。每个视图都是我前端的一个区域,并且位于文件夹 views / public 下面。他们是联系,关于我们等页面。但最后,我不想在我的网址上有公开字样。我只想要点赞:http://localhost:3000/contact并前往正确的地方。此联系人视图中的表单也是如此。

我还有管理员的另一个问题。首先,我创建了管理控制器及其视图:索引,登录注销。之后,我做了一个事件控制器,其中包含以下视图:索引,新建,编辑,显示,删除,销毁和更新

所以,我不知道我是否认为这是正确的,但在搜索了这个主题之后,我为事件控制器做了这样的范围路线:

scope module: 'admin', path: 'admin' do
    resources :events do    
        member do
            get :delete
          end
      end
  end

我必须将事件视图放在 views / admin 文件夹下,然后更改控制器类名称,在其名称前加上 Admin :: 。此外,控制器管理员事件现在位于文件夹 controllers / admin 下。

事件控制器及其视图似乎正常工作。即使是CRUD网址。但我不知道如何将管理员控制器路由置于管理范围下。 我打算像这样做一个网址: http://localhost:3000/admin/ 它应该带我去: admin / admin #index

我也尝试将管理路由置于管理范围之下,但它没有用。就像这样:

scope module: 'admin', path: 'admin' do
    get 'admin/index'
    get 'admin/login'
    get 'admin/logout'
    resources :events do    
        member do
            get :delete
          end
      end
  end

我也试过这个:

scope module: 'admin', path: 'admin' do
    get 'index'
    get 'login'
    get 'logout'
    resources :events do    
        member do
            get :delete
          end
      end
  end

也没有工作。我是否正确思考这条路线的事情?如果没有,我错过了什么?

2 个答案:

答案 0 :(得分:1)

您需要告诉哪个控制器应该处理indexloginlogout ......

如果你想要一个名为Admin :: AdminController的命名空间AdminController,你可以这样做

namespace :admin do
  controller :admin do
    get '/', action: :index
    get :login
    get :logout
  end
  resources :events
end

它将生成这些路线

          Prefix Verb   URI Pattern                      Controller#Action
           admin GET    /admin(.:format)                 admin/admin#index
     admin_login GET    /admin/login(.:format)           admin/admin#login
    admin_logout GET    /admin/logout(.:format)          admin/admin#logout
    admin_events GET    /admin/events(.:format)          admin/events#index
                 POST   /admin/events(.:format)          admin/events#create
 new_admin_event GET    /admin/events/new(.:format)      admin/events#new
edit_admin_event GET    /admin/events/:id/edit(.:format) admin/events#edit
     admin_event GET    /admin/events/:id(.:format)      admin/events#show
                 PATCH  /admin/events/:id(.:format)      admin/events#update
                 PUT    /admin/events/:id(.:format)      admin/events#update
                 DELETE /admin/events/:id(.:format)      admin/events#destroy

答案 1 :(得分:0)

指定您的公共路线

get "/contact",       to: "public#contact",       as: :contact

分开您的管理路线:

namespace :admin do 
    get  :login,    to: "admin#login"
    post :logout,   to: "admin#logout"
    root "admin#root"
end