web-dev-qa-db-fra.com

Pouvons-nous appeler la méthode d'un contrôleur à partir d'une vue (comme nous appelons idéalement l'aide)?

Dans Rails MVC, pouvez-vous appeler la méthode d'un contrôleur à partir d'une vue (comme une méthode pourrait être appelée l'appel d'un assistant)? Si oui, comment?

57
Manish Shrivastava

Voici la réponse:

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

Ensuite, selon vous, vous pouvez le référencer dans ERB exactement comme vous l'attendez avec <% ou <%=:

<% my_method %>
134
sailor

Vous pouvez éventuellement déclarer votre méthode en tant que "helper_method", ou bien la déplacer vers un helper.

Que font helper et helper_method?

23
Pavling

Je n'ai jamais essayé cela, mais appeler des méthodes publiques est similaire à:

@controller.public_method

et méthodes privées:

@controller.send("private_method", args)

Voir plus de détails ici

10
Wahaj Ali

créez votre méthode d'aide à l'action en utilisant 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

Ou vous pouvez également effectuer toutes les actions comme méthode d'assistance en utilisant: helper :all

 class ApplicationController < ActionController::Base
   helper :all

   def foo
    # your foo logic
   end

   def bar
    # your bar logic
   end
 end

Dans les deux cas, vous pouvez accéder à foo et bar à partir de tous les contrôleurs.

6
przbadu