【问题标题】:Uninitialized constant Admin::Admin未初始化的常量 Admin::Admin
【发布时间】:2017-07-18 13:07:42
【问题描述】:

使用 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。 任何想法如何解决它?

【问题讨论】:

  • 你能发布完整的错误堆栈跟踪吗?
  • 这里人:link

标签: ruby-on-rails ruby routes


【解决方案1】:

由于您已经在命名空间内定义了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

【讨论】:

  • 我收到Missing template admin 错误。 Check out.
  • @ThiagoAnderson 那是因为您在app/views/admin/clinics 中没有名为demo.html.erb 的视图;您必须添加该模板。或者,如果您只想在浏览器中打印hello,请将print "hello" 更改为render inline: "hello"
  • 好@Gerry!就是这样。谢谢!
【解决方案2】:

根据错误日志,您正在寻找一个命名空间在 admin/admin/clinics 下的控制器(它在参数的控制器部分中说明了这一点)。

将底部路由更改为不包含 admin(它已经命名空间,您实际上是命名空间两次):

get 'clinics/:id/demo', to: 'clinics#demo', as: 'demo'

这将路由到正确的控制器,admin/clinics,而不是 admin/admin/clinics

【讨论】:

  • 我收到Missing template admin 错误。 Check out.
  • 我会把这个留给 Gerry。
  • 哦:/刚刚注意到我们同时回答了(实际上我在 1 分钟后才回答)。
  • 你打败了我回答第二个问题,所以公平是公平的:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多