scope
一、不使用 scope
resources :jjs
默认对应:
jjs GET /jjs(.:format) jjs#index
POST /jjs(.:format) jjs#create
new_jj GET /jjs/new(.:format) jjs#new
edit_jj GET /jjs/:id/edit(.:format) jjs#edit
jj GET /jjs/:id(.:format) jjs#show
PATCH /jjs/:id(.:format) jjs#update
PUT /jjs/:id(.:format) jjs#update
DELETE /jjs/:id(.:format) jjs#destroy
二、使用 scope,但不传递参数
scope "/admin" do
resources :iis
end
默认对应:
iis GET /admin/iis(.:format) iis#index
POST /admin/iis(.:format) iis#create
new_ii GET /admin/iis/new(.:format) iis#new
edit_ii GET /admin/iis/:id/edit(.:format) iis#edit
ii GET /admin/iis/:id(.:format) iis#show
PATCH /admin/iis/:id(.:format) iis#update
PUT /admin/iis/:id(.:format) iis#update
DELETE /admin/iis/:id(.:format) iis#destroy
可以看出,只影响最外面的网址。
三、使用 scope,并传递参数
接受参数:path、constraints、shallow_path、shallow_prefix、defaults、as、module、controller 等。
1) :as 参数
3 个很重要的参数之一
# 只影响中间 helper 方法
scope as: "admin" do
resources :ffs
end
影响中间层
admin_ffs GET /ffs(.:format) ffs#index
POST /ffs(.:format) ffs#create
new_admin_ff GET /ffs/new(.:format) ffs#new
edit_admin_ff GET /ffs/:id/edit(.:format) ffs#edit
admin_ff GET /ffs/:id(.:format) ffs#show
PATCH /ffs/:id(.:format) ffs#update
PUT /ffs/:id(.:format) ffs#update
DELETE /ffs/:id(.:format) ffs#destroy
2) :path 参数
3 个很重要的参数之一
# 只影响最外面的网址
scope path: "/admin" do
resources :ggs
end
影响最外层
ggs GET /admin/ggs(.:format) ggs#index
POST /admin/ggs(.:format) ggs#create
new_gg GET /admin/ggs/new(.:format) ggs#new
edit_gg GET /admin/ggs/:id/edit(.:format) ggs#edit
gg GET /admin/ggs/:id(.:format) ggs#show
PATCH /admin/ggs/:id(.:format) ggs#update
PUT /admin/ggs/:id(.:format) ggs#update
DELETE /admin/ggs/:id(.:format) ggs#destroy
3) :module 参数
3 个很重要的参数之一
# 只影响最里面的 Controller#action
scope module: "admin" do
resources :hhs
end
影响最里层
hhs GET /hhs(.:format) admin/hhs#index
POST /hhs(.:format) admin/hhs#create
new_hh GET /hhs/new(.:format) admin/hhs#new
edit_hh GET /hhs/:id/edit(.:format) admin/hhs#edit
hh GET /hhs/:id(.:format) admin/hhs#show
PATCH /hhs/:id(.:format) admin/hhs#update
PUT /hhs/:id(.:format) admin/hhs#update
DELETE /hhs/:id(.:format) admin/hhs#destroy
4) :path、:as 和 :module 参数
scope path: ":admin", as: "admin", module: 'admin' do
resources :dds
end
等价于
namespace :admin
admin_dds GET /admin/dds(.:format) admin/dds#index
POST /admin/dds(.:format) admin/dds#create
new_admin_dd GET /admin/dds/new(.:format) admin/dds#new
edit_admin_dd GET /admin/dds/:id/edit(.:format) admin/dds#edit
admin_dd GET /admin/dds/:id(.:format) admin/dds#show
PATCH /admin/dds/:id(.:format) admin/dds#update
PUT /admin/dds/:id(.:format) admin/dds#update
DELETE /admin/dds/:id(.:format) admin/dds#destroy
5) :defaults 参数
对应着 defaults 方法。(它是通用的,类型为 Hash.)
6) :constraints 参数
对应着 constraints 方法。
7) :controller 参数
对应着 controller 方法。
最后更新于