Можем ли мы вызвать метод Контроллера из представления (как мы в идеале вызываем из помощника)? - PullRequest
56 голосов
/ 18 января 2012

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

Ответы [ 4 ]

133 голосов
/ 18 января 2012

Вот ответ:

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

Затем, по вашему мнению, вы можете ссылаться на него в ERB именно так, как вы ожидаете, с помощью <% или <%=:

<% my_method %>
23 голосов
/ 18 января 2012

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

Что делают helper и helper_method?

10 голосов
/ 18 января 2012

Никогда еще не пробовал, но вызов открытых методов похож на:

@controller.public_method

и частные методы:

@controller.send("private_method", args)

Подробнее здесь

6 голосов
/ 19 февраля 2014

создайте свой вспомогательный метод действия, используя 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 со всех контроллеров.

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