Ответ 1
Вот ответ:
class MyController < ApplicationController
def my_method
# Lots of stuff
end
helper_method :my_method
end
Хорошо, я знаю, что здесь не следует спрашивать, но я не нашел лучшего места для ответа. Этот вопрос был задан в хорошем интервью компании.
В Rails MVC вы можете вызвать метод контроллера из представления (как мы в идеале вызываем из помощника)? Если да, то как?
Я не мог ответить на этот вопрос. Не могли бы вы помочь?
Вот ответ:
class MyController < ApplicationController
def my_method
# Lots of stuff
end
helper_method :my_method
end
Возможно, вы захотите объявить свой метод как "helper_method" или, альтернативно, переместить его в помощника.
Никогда не пробовал это, но вызов общедоступных методов аналогичен:
@controller.public_method
и частные методы:
@controller.send("private_method", args)
Подробнее здесь
сделайте свой помощник действий с помощью helper_method :your_action_name
class ApplicationController < ActionController::Base
def foo
# your foo logic
end
helper_method :foo
def bar
# your bar logic
end
helper_method :bar
end
Или вы также можете сделать все действия в качестве вспомогательного метода, используя: helper :all
class ApplicationController < ActionController::Base
helper :all
def foo
# your foo logic
end
def bar
# your bar logic
end
end
В обоих случаях вы можете получить доступ к foo и bar от всех контроллеров.