我正在尝试制作一个包含公共区域和管理信息中心的应用。
对于公共区域,我只使用一个名为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
也没有工作。我是否正确思考这条路线的事情?如果没有,我错过了什么?
答案 0 :(得分:1)
您需要告诉哪个控制器应该处理index
,login
和logout
......
如果你想要一个名为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