2010-10-21 22 views
16

J'essaie d'appeler sanitize dans un contrôleur. Voici ce que j'ai essayé:Utilisation de l'assainissement dans un contrôleur Rails

class FooController < ApplicationController 
    include ActionView::Helpers::SanitizeHelper 
    # ... 
end 

Cependant, je reçois cette erreur:

undefined method `white_list_sanitizer' for FooController:Class 

Je cherchai autour et les gens ont recommandé la commutation de la ligne include pour inclure ActionView::Helpers, mais que les résultats de cette erreur:

undefined method `url_for' for nil:NilClass 

Quelle est la bonne façon d'appeler sanitize? J'utilise Rails 2.3.5.

+1

Pourquoi avez-vous besoin? –

+1

Par exemple, désinfecter l'entrée utilisateur avant de la transmettre à RDiscount pour générer du code HTML à partir du contenu Markdown. – pmc255

Répondre

-4

Je ne suis pas sûr de ce que vous essayez de faire ici, mais je suis presque sûr à 100% qu'il n'appartient pas au contrôleur.

Si vous souhaitez nettoyer un attribut avant de l'enregistrer dans la base de données, faites-le dans le modèle avec un rappel avant la sauvegarde.

Sinon, nettoyez le modèle d'affichage ou l'assistant d'affichage.

+5

Il est probable qu'il essayait de rendre du texte en utilisant AJAX sans utiliser de vue. –

35

vous pouvez utiliser cette méthode à l'intérieur ActionController::Base.helpers d'action:

class SiteController < ApplicationController 
    def index 
    render :text => ActionController::Base.helpers.sanitize('<b>bold</b>') 
    end 
end 

Hope this helps

+0

Vous venez de me sauver beaucoup de temps à foutre, merci! – d11wtq

+0

Merci beaucoup! Juste pour le dossier (et google): c'est la solution parfaite pour employer l'aseptisant d'une méthode d'aide qui s'appelle d'un contrôleur. –