You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何未生成Rails命名空间下的Bulk控制器路由?

Rails命名空间路由未生成预期路径的原因及解决方法

问题分析

你当前的路由代码中,命名空间approvals下的resource :bulk未生成预期的approvals_bulk_approve_path和approvals_bulk_reject_path,执行rails routes -c bulk无输出,核心原因有两点:

  • approve和reject是自定义动作,不属于Rails默认的RESTful动作集合(index/show/new/create/edit/update/destroy),直接在only选项中指定不会被Rails识别。
  • 未显式声明自定义动作的路由规则(如HTTP请求方法、是否属于member/collection),Rails无法自动生成对应的路由。

修正后的路由代码

将自定义动作通过member块进行声明(因为resource :bulk是单数资源,member动作无需ID参数),并指定对应的HTTP请求方法:

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, controller: :bulk do
        member do
          post :approve
          post :reject
        end
      end
    end
  end
end

验证

执行rails routes -c bulk,即可看到预期的路由:

  • approvals_bulk_approve_path(对应POST /approvals/bulk/approve)
  • approvals_bulk_reject_path(对应POST /approvals/bulk/reject)

内容的提问来源于stack exchange,提问作者adass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 12:54:50