私の一部のいくつかは、2つの「モード」でレンダリングできます。 full_display
がfalse
の場合、私はいくつかのフィールドを描画しません。簡単にするために、私は "モード"のいずれかをデフォルトにしたいと思っていました。full_display
が定義されていない場合は、false
として扱います。私はこのコードを思いついた。Railsで動的スコープヘルパーを作成する
(((not defined?(full_display).nil?) && full_display) || false)
かなり動き回っている。それをヘルパーなどの中に入れていいのですが、Rubyは字句的な範囲しか持たないので、それを行う良い方法は考えられません。私はすでに試した
悪いアイデア:部分の上に
<% display = long code that is above %>
を行うと、コードの表示を使用しますが、ビュー内のローカル変数を作成することは、悪い見て、すべての中にコピーする必要があります部分的にfull_display
を使用します。- これを文字列の中にラップし、ヘルパーに入れ、eval(display_helper)を使用して表示しますが、明らかにセキュリティ上の懸念が生じます。以下のような単純なものを言うのは非常に複雑な方法です
これは私のコードよりもはるかに優れています、ありがとう!動的にスコープされたヘルパーを持つことは、より良い(そしてより強力な)でしょう。 –