0

私のデータベースには、いくつかのテキスト コンテンツがあり、そのうちの 1 つは次のとおりです。

<% 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 に答える