名前、タイトル、説明などの属性を持つモデルがあります。名前が例としてweather-foracastの場合、追加のhtml要素を表示したい
= high_chart("my_id", @chart)
ショーテンプレートでは、wichは素敵なチャートを生成します。ページが天気予報でないとき、私はチャートを見せたくありません。
最善のアプローチは何ですか?ビューの条件?
名前、タイトル、説明などの属性を持つモデルがあります。名前が例としてweather-foracastの場合、追加のhtml要素を表示したい
= high_chart("my_id", @chart)
ショーテンプレートでは、wichは素敵なチャートを生成します。ページが天気予報でないとき、私はチャートを見せたくありません。
最善のアプローチは何ですか?ビューの条件?
あなたの問題は、 Object on Rails に示されている Exhibit Pattern に非常に似ています。
簡単に説明すると、提案されている解決策は、モデルの状態 (この場合はレコードの名前) を使用して選択されたデコレーター (または複数のデコレーター) でモデルをラップすることです。
本で説明されているように説明することはできませんが、そのパターンは非常に便利であるため、Avdi Grimm はそれから宝石を作成しました: https://github.com/objects-on-rails/display-case
この答えが完全に行き過ぎていることは知っていますが、考慮すべきことは、条件付きロジックをビューの外に移動することです。
View Presenter パターンを使用する場合は、こちらを参照してください:
About presenter pattern in rails。それを行うより良い方法はありますか?
プレゼンターは Ruby オブジェクトであり、非常に簡単にテストできます。
一方、ビュー内に大量のロジックがあると、テストが非常に困難になります。
さらに、ロジックの分離が必要なため、ビュー ページ内の model.name をチェックすることは、MVC の最善の方法ではありません。
あなたは HAML のように見えるので、次のようにif
修飾子を使用できます。
= high_chart("my_id", @chart) if [model.name] == "weather-forecast"
where[model.name]
は適切なコードに置き換えられます。