2011-12-02 71 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