48 votes

Comment appeler des méthodes ApplicationController à partir de ApplicationHelper

Je veux fournir csv liens dans une vue et j'ai placé le fichier csv de la génération de code en ApplicationHelper. Cependant j'obtiens cette erreur:

undefined method `send_data' for #<#<Class:0x0000010151c708>:0x0000010151a070>

référencement ceci:

send_data content, :type => "text/plain",
  :filename => filename,
  :disposition => 'attachment'

Si je place le code csv dans un contrôleur, il fonctionne très bien. J'espérais utiliser le helper pour éviter d'avoir à définir des itinéraires pour chaque contrôleur, j'aimerais csv options pour (j'ai un tas). Comment puis-je faire send_data (et d'autres méthodes nécessaires) à la disposition de l'aide?

111voto

Harish Shetty Points 38877

Ajoutez la méthode aux ApplicationController et exposez-la en tant que méthode d'assistance:

 class ApplicationController < ActionController::Base

  helper_method :foo

  def foo
    "bar"
  end

end
 

La méthode foo est maintenant accessible dans les vues et les contrôleurs.

10voto

GeorgeW Points 390

Si le problème est de rendre les méthodes dans ApplicationHelper disponibles dans tous les contrôleurs, pourquoi ne pas ajouter une ligne

inclure ApplicationHelper

dans le fichier ApplicationController?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X