Railsビューでこの状況をよりコンパクトにする方法はありますか?
例:私はhamlを持っています
= object.count unless object.count ==0
私はそこで機能を繰り返しているのが好きではありません、私はむしろ次のようなものが欲しいです
= object.count unless ==0
たとえば、もっと複雑なステートメントがあった場合
= object.relations.where(attribute: "something").count unless zero?
私はそれを2行に分割することができます
- cnt = object.relations.where(attribute: "something").count
= cnt unless cnt==0
しかし、状況ごとに複数の行があり、一度使用する変数を格納するのは面倒です。
編集:詳しく説明するために、数値が0であるかどうかを確認し、そうでない場合は何も表示しません。そのように見ると見栄えが良くなります。
アップデート:
作成された回答の1つは、これらの線に沿った解決策を考え出します
class Object
def unless
self unless yield(self)
end
end
したがって、ブロックを使用して、持っているオブジェクトを呼び出すことができます。.unless{|c| c<1}
これにより、条件文に取り組むことができ、何が起こっているのかをかなり明確に保つことができます:)、ボーナスは、ブロック駆動型であるため、任意のオブジェクトでこれを使用できます:P。
みんな、ありがとう :)
さらに更新
|c|
ブロックに吸い込まれている。だから私はAPIを調べてそれも変更しました
class Object
def unless(&block)
self unless instance_eval(&block)
end
end
これで、.count.unless {zero?}を使用してこれを実行できます:P。または、複雑な状態の場合は、それを追加することもできます|c|
。