Можем ли мы вызвать метод контроллера из представления (как мы вызываем из helper в идеале)?


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

в Rails MVC, вы можете вызвать метод контроллера из представления (как мы называем от помощника в идеале) ? Если да, то как?

Я не могу ответить на этот вопрос. Не могли бы вы помочь?

4 52

4 ответа:

вот ответ :

class MyController < ApplicationController
  def my_method
    # Lots of stuff
  end
  helper_method :my_method
end

возможно, вы хотите объявить свой метод как "helper_method" или альтернативно переместить его в Помощник.

что делают helper и 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 со всех контроллеров.