2011-10-31 12 views
6

ERB engineを使用して、私のRails WebサイトのページのオフラインHTMLバージョンを生成しています。このページはRailsで表示されているときには優れていますが、(同じERBテンプレートを使用していても)自分自身でERBを生成するのに問題があります。Railsを使用しないERBの呼び出し:未定義のメソッド 'raw'

最初に私はエラーundefined method 't'を取得していましたが、<%=t(...)%>のコールをすべて<%=I18n.translate(...)%>に置き換えて解決しました。

今私はundefined method 'raw'を取得します。 <%=raw(...)%>のコールを別のものに置き換える必要がありますか?はいの場合、何ですか?

答えて

6

rawは、actionpack/action_viewライブラリのヘルパーとして定義されているため、レールなしでは使用できません。しかし、ERBのテンプレートは、任意のエスケープせず、その出力を示しています。私は同じERBファイルを使用することを好むだろうERB::Util#html_escape方法

include ERB::Util 
ERB.new("<%= h @person_name %>").result # => "&lt;script&gt;name&lt;/script&gt;" 
+0

ではなく、生との1がある脱出のために

require 'erb' @person_name = "<script>name</script>" ERB.new("<%= @person_name %>").result # => "<script>name</script>" 

をそして、このためのと私は 'OutputSafetyHelper'を追加しました(私のカスタムヘルパーを既に含んでいたのと同じですが)'初期化されていない定数OutputSafetyHelper'を取得しました –

+3

'ActionView :: Helpers :: OutputSafetyHelper'を試してください –

+2

マリアンは正しいです。そして '' action_view''を必要とすることを忘れないでください。また、Railsバージョン3.1.0を使用している場合は、 'OutputSafetyHelper'の代わりに' ActionView :: Helpers :: RawOutputHelper'を使用してください。 – WarHog

関連する問題