代码如下
#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