使用原始html和ruby显示查询结果

时间:2011-08-06 10:04:12

标签: ruby-on-rails ruby ruby-on-rails-3

要显示html转义,您可以执行以下操作:

<%= raw @main_post.description %>

是否可以执行存储在@ main_post.description中的ruby / rails代码?例如,全局变量(如MyApp :: Application :: PHONE_NUMBER)或Date.today命令。

命令应如何存储在查询中以及如何在视图中显示?

1 个答案:

答案 0 :(得分:2)

首先,这样做极其危险,如果数据库中的数据可以被任何人编辑,但是你...这会给任何海报程序控制,这不是那么多安全漏洞完全缺乏安全性。

有两种方法可以做到:发送到对象的简单字符串:

<%= @custom_object.send(@post.code_field) %> 

如果定义具有有限数量方法的自定义类,则可能会触发它们。 (您甚至可以验证该字段以限制安全性暴露)

要执行完全任意的代码,请使用Kernel#eval

<%= eval @post.code_field %> 

OTOH,如果您的目标是简单地在帖子中添加一些动态内容,那么如何在帖子中设置一些模板标签然后替换它们呢?

@post.description = "Here's the date: {{date}}"

...

<%= @post.description.gsub('{{date}}', Date.today)