ruby-on-rails - Rails:不支持的控制器名称
问题描述
我命名路线的方式有什么问题?
我是否需要将文件夹结构和模块名称更改为
:car_registration
/app/controllers/car_registration/steps_controller.rb
如果可能的话,我更喜欢使用我拥有的格式。
路线
scope module: 'CarRegistration' do
resources :steps
end
控制器
/app/controllers/CarRegistration/steps_controller.rb
module CarRegistration
class StepsController < ApplicationController
include Wicked::Wizard
steps :step1, :step2, step3
def show
@form_object_model ||= form_object_model_for_step(step)
render_wizard
end
def update
@form_object_model = form_object_model_for_step(step)
render_wizard @form_object_model
end
private
def form_object_model_for_step(step)
"CarRegistration::#{step.camelize}".constantize.new
end
end
end
错误
'CarRegistration/steps' 不是受支持的控制器名称。这可能导致潜在的路由问题。请参阅 http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use (ArgumentError)
解决方案
看起来你至少有两个问题。您正在使用如下文件夹结构:
app/controllers/CarRegistration/steps_controller.rb
这是非常规的。相反,它应该是:
app/controllers/car_registration/steps_controller.rb
然后,您的路线应如下所示:
scope module: :car_registration do
resources :steps
end
推荐阅读
- c# - 如何防止 EF Core 将 DDD ValueObjects 创建为表
- c# - 铸造泛型类型 C#
- git - 创建仓库的克隆/副本并同步两个仓库
- docker - 在带有 PostgresSql 数据库的 docker 容器中运行简单的 Kotlin Ktor 应用程序
- webpack - webpack 样式、ts 和 css 加载器应该只在当前文件夹内构建文件
- docker - 如何获取单个应用程序的 Docker 容器配置?
- python - 神经网络实际返回三类 2
- c - 使用 Int 和浮点值更新 char 数组,而不使用 sprintf?
- web-services - 需要帮助为分布式系统构建正常运行时间仪表板
- elixir - 你如何抑制来自 Prometheus 库的警告?