【Rails】如何在route.rb中写入子目录路径?



代码如下

#app/controllers/admin/feeds_controller.rb
class Admin::FeedsController < ApplicationController
def api_index
#routes.rb
Rails.application.routes.draw do
scope '/hoge' do
resource :feeds, only: [] do
collection do
get :api_index
end
end
end
end

我的愿望是路径是hoge/feeds/api_index,可以在admin/feeds_controller中执行api_index动作。
routes.rb当前路由错误。
因为路径是controller/feeds
如何在controller/admin/feeds中调用api_index动作?

谢谢。

<标题>

错误(Add)我写了下面的

#routes.rb
Rails.application.routes.draw do
scope '/hoge' do
resource :feeds, controller: 'admin/feeds',  only: [] do
collection do
get :api_index
end
end
end
end

然后,我得到一个错误

undefined local variable or method `api_index' for Admin::FeedsController:Class

但是我肯定在app/controllers/admin/feeds_controller.rb里写了def api_index
我该怎么做呢?

您可以使用namespace。更多信息见Rails指南:https://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

#app/controllers/admin/feeds_controller.rb
class Admin::FeedsController < ApplicationController
def api_index
end
end
#routes.rb
Rails.application.routes.draw do
namespace :admin do
scope '/hoge' do
resource :feeds, only: [] do
collection do
get :api_index
end
end
end
end
end

最新更新