私はERBの上に書かれたかなり古いテンプレートシステムを持っています。データベースに保存されているERBテンプレートに依存しています。それらが読み取られ、レンダリングされます。あるテンプレートから別のテンプレートにデータを渡したい場合は、:localsパラメーターをRailsレンダリングメソッドに使用します。一部のテンプレートでこれらの変数のデフォルト変数を設定するために、定義済みの変数を使用しますか?ローカル変数が定義されているかどうかを単純に通知するメソッド。定義されていない場合は、次のようにデフォルト値で初期化します。
unless defined?(perex)
perex = true
end
アプリを最新のRailsにアップグレードしていますが、奇妙な動作が見られます。基本的に、これは機能する場合(perexが定義されていない場合)と機能しない場合(perexが定義されてnilに設定されている場合)があります。これは、他に何も変更せずに発生します。
私は2つの質問があります:定義されたものを使用する以外にもっと良い方法はありますか?信頼性が低いことを証明しているのはどれですか(Rails 1.6の上位で数年間信頼できました)?このような方法では、すべてのテンプレートを書き直す必要はありません。Rubyのドキュメントを調べましたが、定義について何も見つかりませんでしたか?方法。それは非推奨でしたか、それとも私は単なる盲目ですか?
編集:実際の問題は、Ruby/eRBのバグと思われるものが原因で発生しました。untilステートメントが機能する場合もありますが、機能しない場合もあります。奇妙なことに、2行目が実行されたとしても、perexstilは他の世界ではゼロのままでした。定義済みを削除しますか?それを解決しました。