2015-01-12 1 views
-1

Как я могу вызвать метод контроллера приложения внутри файла Ruby? Я не могу использовать традиционную архитектуру MVC.Вызов метода ApplicationController в рубиновом файле

Спасибо!

+1

Вы имеете в виду, что у вас есть приложение Rails, которое имеет метод в ApplicationController и вы хотите вызвать метод в этом классе из рубинового файла в проекте, но не часть цикла запроса? Просьба уточнить вопрос. –

+0

Не могли бы вы показать нам свой ApplicationController, описать, что такое метод, и контекст, в котором запускается другой рубиновый файл? –

ответ

0

Если метод предназначен для вызова как из контроллера приложения, так и из другого рубинового файла, вам необходимо перенести этот метод на другой файл, возможно, на объект Plain Old Ruby Object (PORO). Затем требуйте, чтобы файл с вашего контроллера и из любого другого файла должен был его использовать.

Это хорошая идея иметь логику контроллера только в контроллерах. Поскольку вы вызываете этот метод из чего-то помимо контроллера, он не должен быть строго логикой, связанной с контроллером, поэтому это идеальная возможность для его перемещения.

0

Если у вас есть метод в ApplicationController и вам нужно вызвать его, вы можете использовать трюк, который:

ApplicationController.new.#method_here 

Но лучше переместить метод в плагин и назвать его в ApplicationController для передовой практики.

Больше информации здесь:

How do I call controller/view methods from the console in Rails?

https://stackoverflow.com/a/9159853/2552259

0

Лучший подход к вашей проблеме, чтобы извлечь этот метод в вопросе и поставить его в модуле, как lib/my_utils.rb. После этого вы можете требовать этого файла, в котором когда-либо вам это нужно:

# lib/my_utils.rb 
module MyUtils 
    def the_method_you_were_talking_about(args) 
    .. code .. 
    end 
end 

Тогда:

# application_controller.rb 
require 'lib/my_utils.rb' 
MyUtils.the_method_you_were_talking_about("and any data you need to pass to it") 

И тогда вы могли бы сделать то же самое с другим файлом рубин.

 Смежные вопросы

  • Нет связанных вопросов^_^