2011-12-02 29 views
0

我有一个项目正在进行,这是真正的大数据模型。我试图找出处理模型间关系的最佳方法。如何在视图和控制器级别处理导轨3模型关系?

为了简洁起见:

Car 
    has_many :passengers 
    has_many :items 

Team 
    has_one :head_coach 
    has_many :coaches 
    has_many :players 
    belongs_to :owner 

所以从展会网页我会看到谁是在车上,并在车上哪些项目。我有一些同事谁认为我们应该有一个叫做manage控制器动作,他们会点击展示页面上的链接来管理其他车型

之间的关系,所以Team控制器将这个

class TeamController < ApplicationController 
    # ... magic ... 
    def manage_players 
    @signed_players = Player.signed_players 
    @free_agents = Player.free_agents 
    end 
end 

manage_players视图只会有适当的控制器上的链接到实际行动的RESTful删除关系等等

任何人有这个应该怎么实现的想法?

回答

1

这是一个过于复杂的方法,好消息是,它比你想象的要简单。

省去一些麻烦。简单的回答你的问题是使用nested resources:你可以有一个单一的形式处理Car和所有相关人次/项目,或Team及其教练,球员等

动作/查看您”重新描述将只是Car/Team上的edit操作。 manage动作名称是一个不错的想法和所有的,但你真正采取的行动是一个编辑(没有什么特别的,你所描述的),所以为什么混淆了默认情况下发生的事情edit

如果您想要一个利用嵌套路线的实例,请查看rpglogger.com(这是我的网站)。当您使用它时,请注意地址栏中的路线/网址。

这也是open source。你的问题具体相关的是:

  • 看到routes.rb file,并注意我如何定义上sections资源的两倍 - 这其实给我的路线的两种不同版本 - 这是作用域的航海日志之一,而这作用域为一个在一节
  • 对象看到world_object_form.hamlhaml也岩石,仅供参考),这是我的两个newedit形式 - 但它是短暂的,而简单,而且很容易读/给出已了解它做什么。
+0

我知道嵌套的资源。我只想知道其他人如何解决这个问题。我使用Backbone.js和其他AJAX工具完成了大部分工作,我不必担心这些页面。但是在我们的第一个原型中,我们只是希望它能够在使用简单的HTTP请求之前工作,然后我们就可以使用AJAX – WarmWaffles

+0

嗯,好吧 - 但Rails为您节省时间的主要原因之一是您可以遵循约定而不是仅仅尝试重复一下曼陀罗 - 我确实救了你不得不重新决定所有这些建筑选择。你所描述的对于那些人来说非常合适,而不是一些“几乎”适合的情况。 – jefflunt