0

名前、タイトル、説明などの属性を持つモデルがあります。名前が例としてweather-foracastの場合、追加のhtml要素を表示したい

= high_chart("my_id", @chart) 

ショーテンプレートでは、wichは素敵なチャートを生成します。ページが天気予報でないとき、私はチャートを見せたくありません。

最善のアプローチは何ですか?ビューの条件?

4

3 に答える 3

1

あなたの問題は、 Object on Rails に示されている Exhibit Pattern に非常に似ています。

簡単に説明すると、提案されている解決策は、モデルの状態 (この場合はレコードの名前) を使用して選択されたデコレーター (または複数のデコレーター) でモデルをラップすることです。

で説明されているように説明することはできませんが、そのパターンは非常に便利であるため、Avdi Grimm はそれから宝石を作成しました: https://github.com/objects-on-rails/display-case

于 2012-09-12T17:57:08.497 に答える
1

この答えが完全に行き過ぎていることは知っていますが、考慮すべきことは、条件付きロジックをビューの外に移動することです。
View Presenter パターンを使用する場合は、こちらを参照してください: About presenter pattern in rails。それを行うより良い方法はありますか?

プレゼンターは Ruby オブジェクトであり、非常に簡単にテストできます。
一方、ビュー内に大量のロジックがあると、テストが非常に困難になります。
さらに、ロジックの分離が必要なため、ビュー ページ内の model.name をチェックすることは、MVC の最善の方法ではありません。

于 2012-09-12T16:42:39.773 に答える
1

あなたは HAML のように見えるので、次のようにif修飾子を使用できます。

= high_chart("my_id", @chart) if [model.name] == "weather-forecast"

where[model.name]は適切なコードに置き換えられます。

于 2012-09-12T15:25:14.320 に答える