我是一名初学者。我工作在一个小应用程序,我有一个设计问题。 我认为我的观点太多了,不应该这样做。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])
它工作正常,但感觉不对。我认为我的观点需要更加简单。
我搜索了一下,我发现了一些解决方案,其中人们建立了一个模型来存储结果,但它似乎对我来说过分矫枉过正,当我更改我的请求并需要清理某些方法时,在模式上添加了大量作品一段时间后的表格。
什么是轨道做这样的事情?
感谢
阿兰
谢谢。我不确定如果我正确理解我如何定义辅助方法,但它似乎更像我想要的。我会尝试。 – 2011-01-09 14:54:39