ruby-on-rails - Rails - 一个 View 中的多个模型

标签 ruby-on-rails ruby ruby-on-rails-3 model-view-controller ruby-on-rails-3.1

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

我知道我可以将此代码插入每个链接操作并从 View 访问它,但这似乎不是“ruby 方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?

注意事项:

  • 我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。
  • 我知道 before_filter 但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何 View 访问多个模型。

最佳答案

这类事情最好封装为由特定部分执行的辅助方法。例如,如果这是您的部分 _user_listing.html.erb:

<% users_by_score.each do |user| %>
   ...
<% end %>

然后您将在所有相关 Controller 或 ApplicationHelper 包含的辅助文件中实现 users_by_score 方法,如果它很普遍的话:

def users_by_score
  User.all.sort_by(&:score)
end

在其他 MVC 系统中,这将被视为具有自己的 Controller 的 subview ,但在 Rails 中,您能做的最好的事情就是拥有辅助方法。

关于ruby-on-rails - Rails - 一个 View 中的多个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245253/

相关文章:

ruby-on-rails-3 - 使用 RSpec 和 Rails 的 TDD : testing controller actions with no view

ruby-on-rails-3 - 带有嵌套资源的 Rails best_in_place gem

ruby-on-rails - Rails 子布局

ruby - 将 Json 响应与 Json 文本文件进行比较

mysql - 安装 rails

ruby - 来自 rails 3 中 therubyracer/v8 的 javascript 错误的堆栈跟踪

ruby-on-rails - 简单地使用 rails 密码保护页面 - 我该怎么办?

mysql - 在 Rails 中编写一个简单的递增计数器

ruby-on-rails - 使用 Shopify API 加速获取所有产品

ruby-on-rails - 是否可以在集成测试中设置 cookie 何时过期?