2017-02-21 48 views
1

我試圖做一個具有公共區域和管理儀表板的應用程序。如何正確使用管理員/路由?

對於公共區域,我只使用一個名爲Public的控制器,併爲它提供了很多意見。每個視圖都是我的前端區域,以及文件夾的意見/公開。他們是像接觸,關於我們等網頁。但最後,我不想在我的網站上有公開字樣。我只是想要像這樣:http://localhost:3000/contact,並去正確的地方。這個聯繫人視圖中的表單也是一樣。

而我有管理員的另一個問題。首先,我創建了控制器,其視圖:索引,登錄註銷。之後,我做了一個活動控制器,與意見:索引,新,編輯,顯示,刪除,銷燬和更新

所以,我不知道是否即時通訊思想這一權利,但搜索關於這個問題後,我做了這樣一個範圍路線事件控制器:

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

我不得不把下發生的事件的看法文件夾views/admin然後更改控制器類名稱,將它們的名稱放在Admin ::之前。此外,控制器Admin事件現在位於文件夾controllers/admin

事件控制器和其意見似乎工作正確。即使是CRUD網址。但我不知道如何將控制器路由置於管理範圍之下。 我的目的是讓喜歡這部作品的網址:http://localhost:3000/admin/ ,它應該帶我去:管理/管理#指數

我試圖把聯繫路線下管理範圍太多,但它沒有工作。它是這樣的:

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 

沒有工作無論是。我對這條路線的事情有正確的想法嗎?如果不是,我錯過了什麼?

+0

對於非命名空間,非'admin/admin',只需'admin /'到'controllers/admin_controller.rb',使用'controller:admin do; get'admin /',action::index; 結束' – Chloe

回答

1

您需要知道哪個控制器應該處理index,loginlogout ...

如果你想要像管理:: 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 
+0

它的工作。但是對於管理員區域,我必須將我的** Admin **控制器的所有視圖移至文件夾** views/admin/admin **。包含的佈局文件。 所以,現在,在我的** Events **控制器上,我必須調用這樣的佈局:**佈局「admin/admin」**。可以保持這樣嗎? – churros

+0

即使使用命名空間,當您更改它時,rails會搜索佈局文件的默認位置位於'views/layout' ...對於該位置的佈局,您可以將其稱爲「admin」(對於「views /佈局/ admin.html.erb') 如果你把你的佈局文件放在其他地方,這只是一個設置正確位置的問題......在你的地方,我會創建一個'admin.html.erb',放置它在'views/layout'和控制器上渲染它添加'layout:admin' – cefigueiredo

+0

ok @cefigueiredo,我將它移回到視圖/佈局及其工作,但不是在我的控制器** Admin **上。我不得不放在線**佈局「管理員」**,使其工作。 但是,爲什麼?控制器不會自動搜索具有他的名字的佈局嗎? – churros

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