2008-08-27 17 views
1

私はrailsプロジェクトに取り組んでいます。 observe_fieldタグを使用して、テキスト領域に入力したテキストをコントロールで処理し、結果をdivに表示します(スタックオーバーフローのプレビューと非常に似ています)。特定の文字を入力するまでは、すべてうまく動作します。observe_fieldで特殊文字を渡すときの問題

  1. ? =>
  2. (ポンド)=>は無効真正エラーが発生し、オブジェクト
  3. %は=>は&された後
  4. & =>すべてのものに更新されてからのdivを止めるのparamsで見つけることがないように、変数を引き起こしもはやサーバー上の変数に渡されなくなりました。

これを解決する方法はありますか?

---コードサンプル---

これはビューです。これは

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 

と呼ばれているコントローラである

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

( 'postbodyは、' テキストエリアである)、これが作成されたJavaScriptです:

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')})}) 

答えて

3

これはエスケープな問題です(他の人が述べたように)。

あなたのobserve_fieldを変更したいと思う:ステートメントを使用してのようなものに:あなたのコントローラで次に

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

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

は、あなたが提供することができますコードサンプル?

おそらく、encodeuriなどを使用してHTMLエンティティをエスケープする必要があります。

0

生成されるJavascriptはどのように見えますか?

エスケープされていないような音(一見して)。