2009-06-23 101 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