2009-06-23 110 views
0

我目前在一個SITE MANAGER頁面管理多個模型。我有以下關係:(Rails)構建多模型控制器和索引視圖...?

Sites -> Buildings -> Meters -> Values 

除了每一個「站點」項無我有「編輯|刪除| Add建築」 除了每個「大廈」項目我有「編輯|刪除|添加表」 除了每個「儀表「項目我有」編輯|刪除|增加值「 除了每個」價值「項目我有」編輯|刪除「

在這一點上,我有一個frankensteined控制器稱爲」SiteManagerController「管理此頁面。我只是有像這樣的方法(和在routes文件相應的路由):

add_site 
add_building_to_site 
add_meter_to_building 

delete_site 
delete_building 
delete_meter 

什麼我不知道,但是,無論是否存在質量機制,利用現有的項目控制器CRUD方法,同時能夠爲「SiteManager」頁面和控制器渲染相應的RJS文件?

這將是很好,如果我能以某種方式路由到原始控制器(以便不必手動重寫所有方法),同時也有軌道重定向控制(不僅在視覺上,而且在上下文中)回到「SiteManager」控制器創建或刪除後。請記住,我不是處理表單,但只是一個INDEX頁面和多個「link_to_remote」s

我很可能會問錯誤的問題,所以請考慮......無論如何,米開放的建議。

最好。

回答

0

你可以絕對使用退出項目控制器的CRUD方法。你可以在任何網址指向link_to_remote,它會插入你指示它的html。只要你保持routes.rb的默認路線,一切都應該正常工作。這會將用戶保留在SiteManager頁面上,但他將在後臺與RESTful路由進行交互。

link_to_remote "Edit", :update => "site_#{site.id}", 
    :url => site_url(site), :method => :put 
link_to_remote "Add Building", :update => "new_building", :url => buildings_url, 
    :method => :post 

SitesController < ApplicationController 
    def update 
    @site = Site.find(params[:site_id]) 
    @site.update_attirbutes!(params[:site_id]) 
    render :partial => @site 
    end 
end 

BuildingsController < ApplicationController 
    def create 
    @building = Building.create(params[:building]) 
    render :partial => @building 
    end 
end 
+0

瞭解了,但是我該如何「渲染:更新」並影響「SiteManager」索引頁?我是否把它放在每個物品的控制器中?如何知道在完成時從「SiteManager」上下文中影響部分或抓取rjs? – 2009-06-23 10:54:02