私は非常に大きなレールアプリケーションを開発しています。このタスクの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を持つ単一のテーブルです。
データモデルとは何ですか?クライアントとサーバーの間には関係がありますか? – margo
当初私はクライアントとサーバーを別々のテーブルに用意していましたが、それらを単一のテーブルに入れて物事を少しきれいにしました。私は単に "ノード"と呼ばれるテーブルを作成しているだけで、ホスト名とクライアント名は単なる文字列です。 – merovingian
だから、これについてもっと考えてみると、おそらく同じテーブルにclient_nameとhostnameを持つことは難しくなります。 テーブルを分割して、それが私にとってはもっと簡単かどうかを確認します。現在、私はこのばかげたハッシュ作成列車に乗っています。もう一度、必要以上に困難にする。私はまもなく私の調査結果をフォローアップします。 – merovingian