我需要从一个 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/