it-swarm.com.ru

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

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

55
Manish Shrivastava

Вот ответ:

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

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

<% my_method %>
131
sailor

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

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

23
Pavling

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

@controller.public_method

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

@controller.send("private_method", args)

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

10
Wahaj Ali

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

6
przbadu