2

我构建了一个 .erb 文件,其中列出了一堆变量。

 <body>
    <h1>
        <%= header %>
    </h1>
    <p>
        <%= intro1 %>
    </p>
    <p>
        <%= content1 %>
    </p>
    <p>
        <%= content2 %>
    </p>
    <p>
        <%= content3 %>
    </p>
  </body>

然后我有一个包含变量的文本文件:

header=This is the header
intro1=This is the text for intro 1
content1=This is the content for content 1
content2=This is the content for content 2
content3=This is the content for content 3

我需要从文本文件中获取变量并将它们插入到 .erb 模板中。这样做的正确方法是什么?我想的只是一个 ruby​​ 脚本,而不是整个 rails 站点。它仅适用于小页面,但需要多次执行。

谢谢

4

3 回答 3

3

我会跳过 txt 文件,而是使用 yml 文件。

查看此站点以获取有关如何操作的更多信息:http: //innovativethought.net/2009/01/02/making-configuration-files-with-yaml-revised/

于 2012-05-02T22:30:52.267 回答
3

我想很多人都是从“我如何从它们存储的地方获取值?”来解决这个问题的。并忽略了问题的另一半:“如何<%= intro1 %>用内存中的一些 Ruby 变量替换?

像这样的东西应该工作:

require 'erb'
original_contents = File.read(path_to_erb_file)
template = ERB.new(original_contents)

intro1 = "Hello World"
rendered_text = template.result(binding)

这里的binding意思是每个局部变量在渲染时都可以在 ERB 内部看到。(从技术上讲,它不仅仅是变量,还有范围内可用的方法,以及其他一些东西)。

于 2012-05-03T02:54:01.477 回答
0

我同意 YML。如果您真的想要(或必须)使用文本文件,您可以执行以下操作:

class MyClass
  def init_variables(text)
    text.scan(/(.*)=(.*)\n/).each do |couple|
      instance_variable_set("@" + couple[0], couple[1])
    end
  end
end

my_obj = MyClass.new
my_obj.init_variables("header=foo\ncontent1=bar")
于 2012-05-02T23:04:22.563 回答