Вызов действия ControllerA из другого действия ControllerB с передачей некоторых параметров для действия ControllerA из действия ControllerB в Ruby on Rails - PullRequest
0 голосов
/ 28 июня 2019

Я хотел бы вызвать TestController#actiona из другого ResultController#actionb, передав параметры для actiona вместе с вызовом в рельсах.Кто-нибудь знает, какой самый эффективный способ добиться этого?

Я пытался просто вызвать метод, как показано в коде ниже, но получил ошибку.Что я делаю не так?

Пример псевдокода:

 class TestController  < ApplicationController 
    def actiona
       # @value = do_something_with(params) // we are doing something with params
       # render resource: @value, status: 201
    end
end
 class ResultController  < ApplicationController 
    def actionb
        # new_params = params + some_other_things // building new params
        # @new_value = TestController.actiona(new_params) // we are passing the new_params
        # render resource: @new_value, status: 201
    end
end

Я ожидаю, что вызов ResultController#actionb вызывает TestController#actiona с params и отображаеттот же @value, который TestController#actiona возвратил бы, если бы мы вызвали его напрямую.

1 Ответ

0 голосов
/ 28 июня 2019

actiona - это метод экземпляра. Вы не можете позвонить actiona в классе TestController. Кроме того, если это сработает, вы будете выполнять оба вызова render, actiona и actionb, которые не имеют смысла. Вызов действия контроллера должен вызывать render только один раз.

Если вы хотите выполнить actiona из actionb, вы можете инициировать перенаправление, используя redirect_to со своими параметрами.

Если вы просто хотите отобразить представление TestController, из actionb вы можете указать ожидаемое представление при использовании метода render.

Если вы просто хотите повторно использовать некоторый код, вы можете извлечь эту часть кода в задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...