web-dev-qa-db-fra.com

Où mettre Ruby auxiliaires pour les contrôleurs Rails?

J'ai quelques Ruby dont certains (ou tous) les contrôleurs ont besoin. J'ai essayé de les mettre dans /app/helpers/application_helper.rb. Je l'ai utilisé pour les méthodes à utiliser dans les vues. Mais les contrôleurs ne voient pas ces méthodes. Y a-t-il un autre endroit où je devrais les mettre ou dois-je accéder à ces méthodes d'assistance différemment?

Utiliser les derniers Rails stables.

67
at.

Vous devez définir la méthode dans ApplicationController.

72
Ryan Bigg

Pour Rails 4 et plus, les préoccupations sont la solution. Il existe un article décent ici http://richonrails.com/articles/Rails-4-code-concerns-in -active-record-models

En substance, si vous regardez dans le dossier de votre contrôleur, vous devriez voir un sous-dossier de problèmes. Créez un module dans ce sens

module EventsHelper
  def do_something
  end
end

Ensuite, dans le contrôleur, incluez-le simplement

class BadgeController < ApplicationController
  include EventsHelper

  ...
end
62
John Cleary

vous devez définir des méthodes dans le contrôleur d’application; si vous avez peu de méthodes, vous pouvez procéder comme suit:

class ApplicationController < ActionController::Base    
  helper_method :first_method
  helper_method :second_method

  def first_method
    ... #your code
  end

  def second_method
    ... #your code
  end
end

Vous pouvez également inclure des fichiers auxiliaires comme suit:

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
end
28
Muhamamd Awais

Vous pouvez appeler n'importe quelle méthode d'assistance depuis un contrôleur à l'aide de la commande view_context, par exemple.

view_context.my_helper_method
15
David

La réponse de Ryan Bigg est bonne.

Une autre solution possible consiste à ajouter des aides à votre contrôleur:

class YourController < ApplicationController
  include OneHelper
  include TwoHelper
 end

Meilleures salutations!

7
hyperrjas