は、すぐに#{}
ものを補間からルビーを保つために単一引用符を使用するか、バックスラッシュで#
を逃れますもしあなたが大胆で信頼できるものであれば、あなたは補間をしたいと思っています。eval
:
s = pull_the_string_from_the_database
msg = eval '"' + s + '"'
eval
を動作させるには、s
を二重引用符で囲む必要があります。これは動作しますが、それは最も良いアプローチではなく、あらゆる種類の奇妙で混乱しているエラーにあなたを晒していますが、あなた(または他の信頼できる人)が文字列を書いている限り、大丈夫です。私はあなたが簡単なマイクロテンプレートシステムを持つ方が良いと思う、このような単純なでも何か:
def fill_in(template, data)
template.gsub(/\{\{(\w+)\}\}/) { data[$1.to_sym] }
end
#...
fill_in('Hi {{user_name}}, ....', :user_name => 'Pancakes')
あなたはもちろん望んでいたものは何でも区切り文字使用することができ、私が使用してきたので、私は{{...}}
と一緒に行きました最近Mustache.jsとHandlebars.js。この素朴な実装には問題があります(テンプレート内の書式設定オプションなし、デリミタエスケープなし...など)が、十分かもしれません。テンプレートがさらに複雑になった場合は、ERB
のビットをデータベースに格納して、標準ライブラリでERBプロセッサを使用することができます。
ありがとう、それは働いた... 私はすでに単一引用符で囲まれた文字列を格納していました。私はちょうどデータベースからそれを取得した後に補間する方法が不足していた。 これを使用するとセキュリティリスクが発生しますが、ユーザーはこの文字列を直接変更することはできません。 –
文字列にHTMLが含まれている場合は 'raw'(http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper/raw)メソッドと' html_safe'メソッドを使用して追加します。 – dennismonsewicz