首页 > 解决方案 > 尝试运行即将到来的数据库并由用户从前端保存的“ruby 代码”。(Ruby on Rails)

问题描述

目前我正在构建应用程序,用户可以从客户端运行 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 %> 之类的值时,它会抛出未定义的模板错误。

让我知道我是否遗漏了什么

标签: ruby-on-railsruby

解决方案


ERB当您想要将 ERB 评估为文本时,您需要运行您的模板。

<%= ERB.new(@post.frontend).result_with_hash(fake_post: @fake_post) %>

您需要在模板中替换为才能使用@fake_postfake_post

注意:允许用户编辑 ERB 意味着您需要信任您的用户。ERB 允许运行任何 Ruby 代码。用户可以添加代码来公开他们的数据库凭据或更改数据库中的数据或删除重要的东西。


推荐阅读