Rails - 一个视图中的许多模型

Dru*_*Dru 5 ruby model-view-controller ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我需要从单个视图访问多个模型.以前,我links_controller只用于提供以不同方式排序的链接资源.现在我想包括一个部分(我是假设),它显示按分数排序的顶级用户(@users = User.all.sort_by(&:score))

我知道我可以将此代码插入到每个链接操作中并从视图中访问它,但这似乎不是"红宝石方式",我将需要在不久的将来访问更多模型.这可能变得很脏,这种情况有什么技巧吗?

笔记:

  • 我看到我的应用程序朝着具有动态页面内容的单一格式的方向发展,实质上是一个典型的Web应用程序.
  • 我知道before_filter,但这看起来很麻烦,考虑到我希望应用程序进入的方向.最终从任何视图访问多个模型.

tad*_*man 5

这种事情最好被封装为一个由特定部分运用的辅助方法.例如,如果这是你的偏见_user_listing.html.erb:

<% users_by_score.each do |user| %>
   ...
<% end %>
Run Code Online (Sandbox Code Playgroud)

然后,您将users_by_score在所有相关控制器包含的帮助文件中实现该方法,如果它是普遍的,则在ApplicationHelper中实现:

def users_by_score
  User.all.sort_by(&:score)
end
Run Code Online (Sandbox Code Playgroud)

在其他MVC系统中,这将被视为具有自己的控制器的子视图,但在Rails中,您可以做的最好的是拥有辅助方法.