我有一个专业模特和一个公民模特。我想做的是在专业模特里面嵌套的公民注册,但我磕磕绊绊......
我在我的路线中使用:
get "professional/citizen_edit/:id" => "professional#citizen_edit", as: :professional_citizen_edit
get "professional/cidadao_show/:id" => "professional#citizen_show", as: :professional_citizen_show
put "profissionais/cidadao_update/:id" => "professional#citizen_update", as: :professional_citizen_update
每个人都使用自定义控制器操作 几乎已经完成了,但是在为新公民添加按钮时我遇到了困难 (我的表单页面卡在更新操作中,我无法使用这两个操作)
在尝试解决此问题时,我发现了http://guides.rubyonrails.org/routing.html 而这:
namespace :professionals do
resources :registrations
end
看一种更优雅的方式来处理我的问题。但现在我不知道如何处理控制器!我有这些路线:
professionals_registrations GET /professionals/registrations(.:format) professionals/registrations#index
POST /professionals/registrations(.:format) professionals/registrations#create
new_professionals_cadastro GET /professionals/registrations/new(.:format) professionals/registrations#new
edit_professionals_cadastro GET /professionals/registrations/:id/edit(.:format) professionals/registrations#edit
professionals_cadastro GET /professionals/registrations/:id(.:format) professionals/registrations#show
PUT /professionals/registrations/:id(.:format) professionals/registrations#update
DELETE /professionals/registrations/:id(.:format) professionals/registrations#destroy
我试图在应用程序/控制器或应用程序/控制器/专业人员中添加自定义控制器“注册”但我无法找到控制器正确的路径并继续获取
at: http://127.0.0.1:3000/Profissionais/registrations)
uninitialized constant Profissionais::RegistrationsController
任何人都有任何关于现在该做什么的线索?
答案 0 :(得分:1)
使用命名空间时,您必须做两件事:
app/controllers/
下与命名空间同名的文件夹Profissionais
)您收到该错误的原因是父控制器Profissionais
不存在(即未初始化的常量)
正如documentation所述,您在Profissionais::
中定义的所有控制器都必须位于命名空间(在您的情况下为routes.rb
)。
<强>提示:
我自己没有尝试过,但也可以使用模块创建命名空间,而不是从驻留在app/controllers/
中的父控制器继承。有关详情,请参阅here