レールダッシュボードデザイン:oneコントローラのアクション一部
-
05-09-2019 - |
質問
私の実施ダッシュボードとして相対的にレールが留守りのインフラガ).ダッシュボードを構成で複数のページでは、各ページが含まれてい複数の図表することになりました。のためのモジュール化したいのですが容易であることに加え、新たチャートの変更を望むデータです。
いつのページには、5つの異なる。って、コントローラーな5つの別々のデータをルックアップ、全ての関連するデータのインスタンス変数、および描画する5項を網、それぞれのタッチサブセットのデータです。にとってよりモジュールにとって"インデックス"コントローラのアクションが描画がバdivs、各部門がコントローラのアクションはデータの検索や関連するビューの部分のビューのデータの内部
なので私のサイトダッシュボードページを二つのグラフ website/index
をご利用い website/graph1
や website/graph2
のデータを _graph1.html.erb
や _graph2.html.erb
を用いてコントローラデータ入divs "graph1"
や "graph2"
, など。
この右側のデザイン、その場合、何のための最も簡単な方法は達成。い近似を用 remote_function
と :action => "graph1"
入divsありません(100%満足します。思い情報を見落とさないようするレールをまいました。
解決
バージョン1:
簡単な方法んで実際に使われている生産:iframes.
ほとんどの時間をおい合のページを描画しますすべてを一度に直接サーバーから、実際に利用すので負荷分散.
場合あなただけのアップiframe srcうにコントローラの動作は、非常に単純な解決を必要としない直接クロス-コントローラの相互作用
プロジェクト
- 死す
- 既存のショーの行動など
- るかもしれなりによっては、貯蓄w/並列vs連のご要望やメモリ負荷など
連結:
- できないも簡単に保存、ページと一緒に何を-となります。
- iframesは、ホストのページのjavascriptの名前空間なので、なることが必要になる場合がありう自らのミニマルなレイアウトもできな影響を与え周囲のページの外に出iframe
- が遅くなることによっては、平時間など
- ポテンシャルn+1の効率バグの場合が多いようなモジュールページ
バージョン2:
同じことをJS電話交換部と、上のタブレットでパイロット:
<div id="placeholder">
<%= update_page {|page| page['placeholder'].replace with some partial call here } %>
上記以外:
プロジェクト
- ロックしないようでiframeと株式JS文脈など
- できる用途の特異故障事例
コン:
- が必要でJSおよびプレースホルダdivs;少し複雑な
バージョン3:
コビバップからハードバップ項を網.で複雑ないというようなダッシュボードの個別モジュールを大量設定ロジックしています。
様々な方法がありますがこのように'mixins'のように、IMOちにちょっとkludgy.
ETA:について教えてくださいよmixinsは何が本質的にはライブラリファイルを実装したモジュールのコントローラー'設定機能がどこにいるライフスタイルを使用し、'em.
しかし、この欠点:
- いうトップレベルコントローラーの行動の結果ページと、そのモジュールがない場合がございます、簡単に作成されている場合は本当にwidgetyう面が表示される場合があり、例えばユーザーの嗜好による)
- なんとして本格的なコントローラー
- それはまだintermixesのロジックが保持のためのもので開催
- 簡単で分別され、その独自のコントローラが必要でには、図書室タイプのファイル/mixin
で呼び出すことはでき法の一つのコントローラから別のコントローラです。しかし、この大きな痛みのお尻大きなkludge.にうことを検討すべきだからといって、私の場合)いも独自に必要なコントローラを自身の権利、およびb)では機能を完全には終了です。
ただいまの中でリファクタリングの理由でもっと痛み、よろしくお願いしまわないがある場合を除きます。
概要
最良の方法で厚で最初の場合は複雑なものにかかってしまうという重要なセットアップの簡単なiframe表示されるモジュールのパラメータを渡すだれを使用ultraminimalistレイアウト(CSS+JSヘッダ)で表示されていないとおり開催いたします。
このときのものは完全に独立した機能により以下のもとでも正常コントローラーが自分の以外のレイアウト設定保存は通常の経路等
必要がなければなセットアップ、そして使おう項を網、通いを必要として地元の変数となります。この開始に脆弱な場合せのようなn+1効率のバグが...
他のヒント
は、
を使用することによって、これを達成できますrender_output =レンダリング:アクション=> "graph2"
しかし、私は個人的にはおそらく共有ヘルパーのいずれかでコードをラップしたり、共有テンプレートを使用してコードを再利用するためにlibディレクトリの下に「LIB」所有書くでしょう。あなたはroute.rbファイルを変更しない限り、定義された任意のパブリックメソッドは、
によりアクセス可能であることを忘れないでください/コントローラ/アクション/:ID
また、機能のレイアウトをオフにすることを忘れない:レイアウト=>ゼロ(またはコントローラレイアウトの上部に指定し、「グラフ」=>「graph2」
除きます乾杯
クリスチャン
私はあなたが概説されてきた方法でAJAXを使用せずにこれを達成するための特別なRailsのトリックを認識していないよ。
あなたが求めるモジュール性を得るための最も簡単な方法は、あなたは、単にビューの変数を設定するには、あなたのset_up_graph1_data
アクションから呼び出す別の方法にコントローラコードの部分(例えばset_up_graph2_data
、index
、など)を、置くことです。
あなたが複数のコントローラにそれらが利用可能にしたい場合は、ApplicationController
にこれらのメソッドを置くことができます。
側の注意点としては、早い段階で、RailsのののあなたはAJAXを使用することなく、ここのために求めている正確に何をできるようになる「コンポーネント」と呼ばれる機能を持っていたんでした。あなたのビューから、あなただけのインライン、別のコントローラのアクションをレンダリングすることができます。ただし、この機能は、性能とデザイン哲学の理由で削除されました。