使用 Ruby:2.3.1p112
和 Rails:3.2.12
我正在尝试在我的控制器中调用演示方法。所以,在我的_form.html.erb
中,我有:
<%= link_to 'Demo', "/admin/clinics/"+@clinic.id.to_s+"/demo" %>
在我的routes.rb
:
match "/admin" => "admin#index", :as => :admin
namespace :admin do
resources :admin_users
resources :health_plan_tables
resources :health_aid_tables
resources :clients
resources :clinics
resources :specialties
resources :qualifications
resources :profissionals
resources :addresses
resources :documents
resources :banners
root :to => 'banners#index'
get 'logout' => 'devise/sessions#destroy'
get 'clinics/:id/demo', to: 'admin/clinics#demo', as: 'demo'
end
我的clinics_controller.rb
在文件夹controllers/admin
内,我只有:
def demo
print "hello"
end
因此,当我单击链接时,错误消息Uninitialized constant Admin::Admin
出现。 任何想法如何解决它?
由于您已经在命名空间中定义了demo
路由,因此无需指定admin/clinics#demo
,只需clinics#demo
namespace :admin do
resources :admin_users
resources :health_plan_tables
resources :health_aid_tables
resources :clients
resources :clinics
resources :specialties
resources :qualifications
resources :profissionals
resources :addresses
resources :documents
resources :banners
root :to => 'banners#index'
get 'logout' => 'devise/sessions#destroy'
get 'clinics/:id/demo', to: 'clinics#demo', as: 'demo'
end
根据错误日志,您正在寻找在 admin/admin/clinics 下命名空间的控制器(它在参数的控制器部分显示(。
将底部路由更改为不包含 admin(它已经命名空间,并且您有效地将其命名为两次(:
get 'clinics/:id/demo', to: 'clinics#demo', as: 'demo'
这将路由到正确的控制器,管理员/诊所,而不是管理员/管理员/诊所