2010-10-21 20 views
16

Ich versuche sanitize innerhalb einer Steuerung aufzurufen. Hier ist, was ich versucht:Verwenden von Bereinigen innerhalb eines Rails-Controllers

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

Allerdings bin ich immer diese Fehlermeldung:

undefined method `white_list_sanitizer' for FooController:Class 

ich um gesucht und Menschen empfohlen Umschalten der Leitung umfassen ActionView::Helpers aufzunehmen, aber das führt zu diesem Fehler:

undefined method `url_for' for nil:NilClass 

Wie lautet der richtige Anruf? sanitize? Ich benutze Rails 2.3.5.

+1

Warum Sie diese brauchen? –

+1

Um beispielsweise Benutzereingaben zu bereinigen, bevor sie an RDiscount übergeben werden, um aus Markdown-Inhalt HTML zu generieren. – pmc255

Antwort

-4

Ich bin mir nicht sicher, was Sie hier versuchen, aber ich bin fast 100% sicher, dass es nicht in den Controller gehört.

Wenn Sie ein Attribut bereinigen möchten, bevor Sie es in der Datenbank speichern, tun Sie dies im Modell mit einem Rückruf vor dem Speichern.

Andernfalls bereinigen Sie in der Ansicht Vorlage oder Ansicht Helper.

+5

Wahrscheinlich hat er versucht, Text mit AJAX zu rendern, ohne eine Ansicht zu verwenden. –

35

können Sie diese ActionController::Base.helpers innerhalb Aktion Methode verwenden:

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

hoffe, das hilft

+0

Du hast mir gerade eine Menge Zeit gespart, mich zu schämen, danke! – d11wtq

+0

Vielen Dank! Nur für die Aufzeichnung (und Google): Dies ist die perfekte Lösung, um Desinfizierer von einer Hilfsmethode zu verwenden, die von einem Controller aufgerufen wird. –

Verwandte Themen