2008-08-27 10 views
1

Ich arbeite an einem Schienenprojekt. Mit dem Tag observe_field nehme ich Text in einen Textbereich, verarbeite ihn in einem Steuerelement und zeige das Ergebnis in einem div an (sehr ähnlich der Vorschau im Stack-Überlauf). Alles funktioniert gut, bis ich bestimmte Sonderzeichen eintippe.Probleme beim Übergeben spezieller Zeichen mit observe_field

  1. ? => Bewirkt, dass die Variable nicht in den params gefunden zu werden Objekt
  2. (Pfund) => verursacht eine ungültige Authentizität Fehler
  3. % => die div-Stationen vom
  4. aktualisiert
  5. & => alles, was nach dem & ist nicht mehr in die Variable auf dem Server übergeben.

Gibt es eine Möglichkeit, dies zu lösen?

--- Codebeispiel ---

Dies ist die Ansicht. ('Postbody' ist ein Textbereich)

<%= observe_field 'postbody', 
        :update => 'preview', 
        :url => {:controller => 'blog', :action => 'textile_to_html'}, 
        :frequency => 0.5, 
        :with => 'postbody' -%> 

dies die Steuerung, die

def textile_to_html 
    text = params['postbody'] 
    if text == nil then 
     @textile_to_html = '<br/>never set' 
    else 
     r = RedCloth.new text 
     @textile_to_html = r.to_html 
    end 
    render :layout => false 
end 

genannt wird, und das ist das Javascript, das erstellt wird:

new Form.Element.Observer('postbody', 0.5, function(element, value) {new Ajax.Updater('preview', '/blog/textile_to_html', {asynchronous:true, evalScripts:true, parameters:'postbody=' + value + '&authenticity_token=' + encodeURIComponent('22f7ee12eac9efd418caa0fe76ae9e862025ef97')})}) 

Antwort

3

Dies ist ein Fluchtproblem (wie von anderen angegeben).

Sie wollen Ihre observe_field ändern: mit Aussage zu so etwas wie:

:with => "'postbody=' + encodeURIComponent(value)" 

Dann in Ihrem Controller:

def textile_to_html 
    text = URI.unescape(params['postbody']) 
    ... 
0

Können Sie bieten Codebeispiel?

Wahrscheinlicher als nicht müssen Sie nur Ihre HTML-Entities mit encodeuri oder etwas ähnliches zu entkommen.

0

Wie sieht das generierte Javascript aus?

Sounds (auf den ersten Blick) wie es nicht entkommen ist.

Verwandte Themen