2011-12-26 8 views
0

私はこれを理解しようとしている最後の2日間私の頭を叩いて、私は最終的にソースを絞り込んだ。Rails 3.1 html_safe(+文字列データのコンボ) - コントローラーアクションを2回発射しますか?

私はサイドバーのhtmlを生成し、戻り値にhtml_safeを使用するヘルパーを使用しています。私はちょうど正しい方法で構造化されたhtmlを持っていると、コントローラーのアクションが2回発生します(私は2つのレコードを自分のアクションからdbに挿入してから、ruby-debugを使って確認しました。ここではヘルパーのコードは次のとおりです。

def get_sidebar 

    first = String.new 
    second = String.new 
    str = String.new 

    str+= "<a href=''><img src='" << first << second << "'></a>" 

    str.html_safe 

end 

私はstrの修正とconcat'd VARS前と後からimgタグを削除した場合、それは一度だけ発生させます。 concat'dのvarsが空でない場合、それは一度だけ発生します(これらはもともとNULLではないdbカラムから出てきましたが、空の文字列でした)。 html_safeメソッドを呼び出さないと、一度だけ起動します...

何が起こっているのですか?これはhtml_safeの動作ですか?私は狂ってる?

ありがとうございます!

答えて

0

使用content_tagの代わりhtml_safe

+0

ありがとうございました。なぜアクションが2回発射されるのか?文字列が正しくフォーマットされていないと、奇妙な動作のようです。 – Jason

+0

あなたはどのビュージェネレータを使用していますか?ハムル? – freeze

+0

Rails 3.1のデフォルトのerbビューだけです。 – Jason

0

ユーザーのブラウザはそれにその文字列を含むページをロードし、何が起こりますか?イメージを取得するには、サーバに戻ってきてください。 2つの要求。イメージURLのような音は実際にはRailsリクエストです。

文字列を安全とマークするためにhtml_safeを使用しないと、イメージタグがエスケープされ、ブラウザがサーバーに戻ることはありません。

関連する問題