提问人:adass 提问时间:10/18/2023 更新时间:10/18/2023 访问量:35
为什么没有生成命名空间路由?
Why there are no namespace routes generated?
问:
我被以下代码困住了,试图创建一个命名空间路由。
Rails.application.routes.draw do
# skipping some lines for clarity
devise_for :users
authenticate :user do
resources :approvals, only: [:update]
namespace :approvals do
resource :bulk, only: %i[approve reject], controller: :bulk
end
end
end
我期望得到一个 & ,但没有生成控制器路由。结果为空。approvals_bulk_approve_path
approvals_bulk_reject_path
bulk
rails routes -c bulk
知道这是什么原因吗,有人吗?
答:
3赞
dbugger
10/18/2023
#1
only:
只有 (ahem) 适用于标准操作(创建、新建等)。
需要创建自定义操作...
Rails.application.routes.draw do
devise_for :users
authenticate :user do
resources :approvals, only: [:update]
namespace :approvals do
resource :bulk, controller: :bulk do
collection do
put :approve
put :reject
end
end
end
end
end
这假定您希望它们正式发布,而不是绑定到 的特定实例。如果希望将它们绑定到 更改为 的实例。bulk
bulk
collection
member
评论
0赞
adass
10/18/2023
我期望只创建带有选项的 bulk#approve 和 bulk#reject - 你是对的,这是行不通的。Hovewer,创建了所有 CRUD 操作,这可能不是您期望的。only:
resource :bulk
0赞
Alex
10/18/2023
@adass或只是或也许resource :bulk, only: [] do
put "bulk/approve"
put "bulk/reject"
controller :bulk do
评论
bulk_imports