ruby-on-rails 为什么没有生成命名空间路由?

vyswwuz2  于 2023-10-21  发布在  Ruby
关注(0)|答案(1)|浏览(111)

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

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_path,但没有生成bulk控制器路由。rails routes -c bulk的结果为空。
有人知道这是什么原因吗?

anauzrmj

anauzrmj1#

only: 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

相关问题