Uninitialized constant “Controller Name”

帅比萌擦擦* 提交于 2019-12-01 15:06:40

It should be SchedulesController, not Users::ScheduleController. Controllers should only be namespaced when the route is namespaced with namespace. Controller names should also always be plural.

What you're creating is a nested resource, not a namespaced one.

Is the namespacing of the SchedulesController intentional? i.e. do you really mean to do this?

class Users::SchedulesController < ApplicationController

Or are you only doing that because schedules are a "sub-thing" from users?

The reason I ask this is because typically within Rails, nested resource controllers aren't namespaced. You would only namespace a controller if you wanted to modify the controllers in a special way under a namespace. A common example of this would be having some controllers under an admin namespace, inheriting from a BaseController within that namespace that would restrict only admins from acessing those controllers.

Option 1

If you didn't intentionally namespace this controller, then you want to remove the Users:: prefix from your controller, and move it back to app/controllers/schedules_controller.rb, the helpers back to app/helpers/schedules_helper.rb and the views back to app/views/schedules. Perhaps you ran a generator which also generated a Users::Schedule model, which should also need to be renamed to Schedule and moved back to app/models/schedule.rb.

Option 2

If you did intentionally namespace this controller, then you want to do this in your routes:

namespace :users do
  resources :schedules
end

Leave everything that's been generated as it should be.

In your routes.rb you need to specify the controller like this:

resources :users do resource :schedules, controller: 'users/shedules' end

replace resources :users to namespace :users

Because your schedule controller is inside users folder. class Users::ScheduleController < ApplicationController # Controller methods here... end

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!