【发布时间】:2021-10-04 17:38:48
【问题描述】:
由于 rake routes 给出了我访问的确切路线,因此页面显示 Routing Error uninitialized constant TasksController Did you mean? AppsController
在routes.rb我写了
resources :users do
resources :tasks do
collection do
post 'tasks-info', to: 'users/tasks#tasks_info', format: 'json'
end
end
end
tasks_controller.rb 位于app/controllers/users 文件夹下
def show
end
show.html.slim 在app/views/users/tasks foler
我访问的网址是http://localhost:3000/users/1/tasks/1,其中rake routes 包括user_task_path GET /users/:user_id/tasks/:id(.:format) tasks#show
我真的不知道错误来自哪里,任何帮助都非常感谢!
更新:问题已解决,如果你有同样的问题,请参考下面的cmets(我根据自己的理解进行了总结,但不确定是否完全正确)!或者查看下面的答案,因为工程师mnky 和 Scott 的答案都应该有效。
【问题讨论】:
-
您的
TasksController是否在适当的命名空间中?它不仅是文件位置 (afaik),而且文件的内容也需要在Users命名空间中。请尝试并返回。 -
您不应该在 app/controllers/users 下拥有 tasks_controller,因为“users”不是命名空间。更多信息,guides.rubyonrails.org/…
-
@VijayRaghavanAravamudhan 是的,我确实使用过
class Users::TasksController < ApplicationController -
@razvans 但是,除非我将 tasks_controller.rb 放在用户文件夹下,否则我自定义的任务操作将不起作用。我应该怎么做才能使自定义动作和自动生成的动作都起作用?
-
@razvans 哦,我把自定义动作的路线从嵌套的资源中分离出来了,它可以工作。感谢您的帮助!
标签: ruby-on-rails ruby nested-routes