目前我正在构建用户可以从客户端运行ruby代码模块的应用程序当代码被保存时,它被保存在数据库中,但是当我获取代码来显示文件时,代码只是打印字符串,它没有运行。
**<%=raw @post.frontend %>**
这一行只运行前端,如css和html,但不运行ruby代码
的例子:
**@post.frontend =
"<% @fake_post.map do |simple| %>
<h1> <%= simple.description %> </h1>
<% end %>"**
输出:
**<% @fake_post.map do |simple| %>
<%= simple.description %>
<%= simple.description %>
<% end %>**
当我打印<%= puts @post.frontend %>抛出未定义模板错误。
让我知道如果我错过了什么
当您要将ERB计算为文本时,需要通过ERB
运行模板。
<%= ERB.new(@post.frontend).result_with_hash(fake_post: @fake_post) %>
你需要将模板中的@fake_post
替换为fake_post
才能正常工作。
注意:允许用户编辑ERB意味着你需要信任你的用户。ERB允许运行任何Ruby代码。用户可以添加代码来暴露他们的数据库凭据,或者更改数据库中的数据,或者删除重要的内容。