为什么没有生成命名空间路由?

Why there are no namespace routes generated?

提问人:adass 提问时间:10/18/2023 更新时间:10/18/2023 访问量:35

问:

我被以下代码困住了,试图创建一个命名空间路由。

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_pathapprovals_bulk_reject_pathbulkrails routes -c bulk

知道这是什么原因吗,有人吗?

Ruby-on-Rails 路线

评论

0赞 max 10/18/2023
我不得不说,使用“批量”作为单一资源是相当臭的。我会命名它或实际资源(名词)的东西。bulk_imports

答:

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

这假定您希望它们正式发布,而不是绑定到 的特定实例。如果希望将它们绑定到 更改为 的实例。bulkbulkcollectionmember

评论

0赞 adass 10/18/2023
我期望只创建带有选项的 bulk#approve 和 bulk#reject - 你是对的,这是行不通的。Hovewer,创建了所有 CRUD 操作,这可能不是您期望的。only:resource :bulk
0赞 Alex 10/18/2023
@adass或只是或也许resource :bulk, only: [] doput "bulk/approve"put "bulk/reject"controller :bulk do