DBからコードをレンダリングしてerbファイルで動作させる方法

概要

次のようなマークアップがあります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html 
xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" 
content="text/html; charset=utf-8">  <title>something<title><......

次のように Ruby タグが埋め込まれます。

Hi, <%[email protected]%> 

このすべてのファイル コードをデータベース列に保存しました。このコードをデータベースから取得して機能させたいのですが、どうすればよいでしょうか?

<%= @emaildetail.description %>

html_safe を試しましたが、Ruby コードと変数が機能しません

解決策

表示されている Ruby タグは ERB と呼ばれます

これを使用する最小限の例を次に示します。

require 'erb'

x = 42
template = ERB.new <<-EOF
  The value of x is: <%= x %>
EOF
puts template.result(binding)

あなたの場合、テンプレートのコンテンツはコードではなくデータベースから取得されますが、残りは同じように機能するはずです。

これにより、すべての Ruby コードと変数が解決されます。 HTML としてレンダリングするには、引き続き .html_safe を呼び出す必要があります。