从数据库中插入字符串

时间:2016-09-22 13:08:39

标签: ruby string-interpolation

例如:

t = Test.new
t.test_string = "\#{foo} and \#{bar}"
t.save

然后我想在我的一个方法中插入这个字符串。

我已经尝试了几种选择:

  1. ERB.new

    foo = 'Hello' bar = 'World' ERB.new(t.test_string).result

  2. 它不起作用,test_string打印为"\#{foo} and \#{bar}"

    只有在没有转义符号'\'的情况下打印它才能正常工作。

        ERB.new("#{foo} and #{bar}").result
     => "Hello and World"
    

    但我怎样才能让它编程呢?

    1. eval

      foo = 'Hello' bar = 'World' eval '"' + t.test_string + '"'

    2. 它有效,但不安全。

      我还有其他选择吗?或者如何让ERB.new工作?

1 个答案:

答案 0 :(得分:1)

也许我不太了解你的需求 这是你在找什么?

require 'erb'

erb_template = ERB.new('foo equals <%= bar %> and 2 + 2 = <%= 2 + 2 %>')
bar = 'baz'
erb_template.result(binding) # => foo equals baz and 2 + 2 = 4

binding方法捕获您当前的范围,以便ERB在此范围内呈现模板。