私は初心者です。私は小さなアプリケーションで動作し、私は設計上の問題があります。 私は私の考えでは論理が多すぎると思います。Rails - コントローラからビュー論理を削除する
ここに私のコントローラ:
if params[:search] @hosts=Host.all @total = {} @total_by_group={} @search=true Disks.search(params[:search]).each do |disk| if @total[disk.host.name] @total[disk.host.name]+=disk.capacity else @total[disk.host.name]=disk.capacity end if @total_by_group[disk.group.name] @total_by_group[disk.group.name]+=disk.capacity else @total_by_group[disk.group.name]=disk.capacity end end end
そして、私のビュー:
- if @search - @hosts.each do |host| - if @total[host.name] %br %table %tr %th host %th total size - host.groups.each do |group| - if @total_by_group[group.name] %th=group.name %tr %td=host.name %td=sprintf("%0.02f", @total[host.name]) - host.groups.each do |group| - if @total_by_group[group.name] %td=sprintf("%0.02f", @total_by_group[group.name])
それが正常に機能していますが、右に感じることはありません。私の見解はもっとシンプルにする必要があると思う。
私は検索して、結果を保存するモデルを構築するいくつかのソリューションを見つけましたが、私には過度のものであり、要求を変更してクリーンアップする必要があるときに、テーブルはしばらくしてから。
このようなことをするためのレールの仕組みは何ですか?
if params[:search]
@disks = Disks.custom_search(params[:search])
end
とあなたのディスクのモデル内の他の
def custom_search term
find_by_field(term, :include => :host)
すべてのようなもの:
アラン
ありがとう。私はヘルパーメソッドを定義する方法を正しく理解しているかどうかはわかりませんが、もっと好きなようです。試してみます。 –
ビューに必要なものの擬似コードを書くと、いくつかのポインタを貸せてうれしいです。 :) – mark
それはそれのようなものです:各ホストのために、ディスクがグループ "group1"に属しているすべてのディスク容量の合計を表示します。 –