0

在我的数据库中,有一些文本内容,其中之一是:

<% abc do %>
ddd
<% end %>

当我将它转储到 yaml 时to_yaml(),它就像:

content: |-
    <% abc do %>
    ddd
    <% end %>

然后,当我使用时rake db:fixtures:load,会发生这样的错误:

The exact error was: 
  NoMethodError: undefined method 'abc' for main:Object 

我查了源码db:fixtures:load,发现rails不会把内容当作纯文本,而是erb模板,所以它会尝试查找并执行'abc'方法。

我怎样才能解决这个问题?我认为不应使用默认的“to_yaml”。

4

1 回答 1

1

我们可以将 '<%' 转义为: 如何在夹具中转义 ERB 代码?

我现在正在做:在写入文件之前,我将所有 '<%' 替换为 '<%%'。但它并不总是正常工作。如果内容有一些非英文字符,内容将被转储为“二进制”,而不是文本。然后在回读时,'<%%' 不会被转换为 '<%'。

于 2010-06-19T08:36:24.657 回答