如何使用rails 3.2 erb中的eval在运行时执行存储在字符串中的视图代码?
我们要做的是将一大块erb
代码存储在一个string
,然后在run time
执行代码。 这是我们做的测试:
1. take out a chunk of the code from a working erb file and, 2. rewrite the erb file with eval.
以下是取出的erb代码块:
#
t()是国际化的翻译方法。
这是重写后的erb文件:
在重写之前, chunk of code
在
^ Extracted source (around line #6): 4: |
---|
上面的代码有什么问题? 谢谢您的帮助。
eval
通过评估ruby代码来工作。
irb(main):001:0> eval('puts "Hello World"') Hello World => nil
转换erb模板应该使用ERB
类完成
irb(main):002:0> require 'erb' irb(main):003:0> ERB.new('<%= "Hello World" %>').result => "Hello World"
我的猜测是code
实际上是一个包含ERB模板而不是ruby代码的字符串。
尽管如此,我认为这不是一个好方法。 task.project.name
可能来自可能来自用户输入的数据库。 对此进行评估似乎不是一个好主意。
可能你可以用正常的partials
来解决你的问题