2017-03-29 1 views
0

私は非常に大きなレールアプリケーションを開発しています。このタスクの1つは、非常に大きなクライアントリストを表示することです。各クライアントには複数のサーバーがあります。私はビュー内の@client_nameループを介してすべてのクライアントを表示することができます。ただし、各クライアントのそれぞれのサーバーを表示することはできません。 (私はこれが理にかなってほしい)。もう少しコンテキストを与えるために、クライアントのインデックスページにアクセスすると、クライアント上で選択することができ、そのクライアントに関連付けられたサーバのドロップダウンリストが表示されるはずです。ユーザーはそのドロップダウンから選択し、個々のサーバーの表示ページにリダイレクトされます。railsビューにサブ値を表示

私のコントローラは、この

def index 
@nodes = Node.all.paginate(page: params[:page], per_page: 40 
end 

def node_filter 
    @client_name = @nodes.distinct.pluck(:client_name) 
    @hostname = @nodes.pluck(:hostname) 
end 

インデックス(ビュー)のように見えます。これは、あなたが期待する正確にどのように行動している

<% @client_name.each do |cn| %> 
    <tr> 
    <td> 
    <p><%= cn %></p> 
    <p><%[email protected] %></p> <!-- displaying ALL servers regardless of client ownership --> 
    </td> 
    </tr> 
<% end %> 

この(わかりやすくするために取り除かスタイリング)のように見えます。各ドロップダウンにはすべてのホストのリストがあります。私は、@ hostname配列を反復し、 "cn"にマッチさせて表示するヘルパーメソッドを作成しようとしましたが、それはうまくいきませんでした。私はこれを行う簡単な方法があることを知っている、私はそれをoverthinkingしていると私は狂ったので、私はプロに手を差し伸べていると確信しています。助言や助けをいただければ幸いです。

また、これを簡単にするために、これはclient_nameとhostnameを持つ単一のテーブルです。

+0

データモデルとは何ですか?クライアントとサーバーの間には関係がありますか? – margo

+0

当初私はクライアントとサーバーを別々のテーブルに用意していましたが、それらを単一のテーブルに入れて物事を少しきれいにしました。私は単に "ノード"と呼ばれるテーブルを作成しているだけで、ホスト名とクライアント名は単なる文字列です。 – merovingian

+0

だから、これについてもっと考えてみると、おそらく同じテーブルにclient_nameとhostnameを持つことは難しくなります。 テーブルを分割して、それが私にとってはもっと簡単かどうかを確認します。現在、私はこのばかげたハッシュ作成列車に乗っています。もう一度、必要以上に困難にする。私はまもなく私の調査結果をフォローアップします。 – merovingian

答えて

0

これは関係の問題であることが判明しました。単一のテーブルにすべてを格納し、私が必要とした方法を表示するために愚かな解析をしようとする方法で情報を表示しようとしました。代わりに、テーブルを分割してそれらの間に適切な関係を作成することで、必要なものを簡単に照会して表示することができました。

関連する問題