Есть несколько способов, которыми я могу думать делать это:
(НЕ РЕКОМЕНДУЕТСЯ) - Отправить URL, к тому же контроллеру в вашем routes.rb файле.
Shared имен, контроллеры наследуют от
Например, вы могли бы:
# controllers/shared/users_controller.rb
class Shared::UsersController < ApplicationController
def index
@users = User.all
end
end
# controllers/api/users_controller.rb
class Api::UsersController < Shared::UsersController
end
# controllers/admin/users_controller.rb
class Admin::UsersController < Shared::UsersController
end
выше позволит вам разделить ваш указательный действие через соответствующие контроллеры. Файл маршруты в этом случае будет выглядеть следующим образом:
# config/routes.rb
namespace :api do
resources :users
end
namespace :admin do
resources :users
end
Это определенно много кода, чтобы разделить одно действие, но значение размножается как число общих действий делает, и, самое главное, ваш код находится в одном месте.
Имеет ли смысл иметь общие контроллеры в каталоге основного контроллера? В 'app/controllers'? – WagnerMatosUK
нет, в любом случае это нормально, это зависит от того, как вы хотите его организовать. Я думаю, что наличие общих контроллеров в общей папке обеспечивает большую ясность, хотя – Phil
Это не сработало. Контроллер API (например) наследовал от «ApplicationController», в то время как общий контроллер этого не делает. Когда я добавил 'class Shared :: PostsController
WagnerMatosUK