(Rails)构建一个多模型控制器和索引视图......?

时间:2009-06-23 01:26:30

标签: ruby-on-rails controller models

我目前正在通过一个SITE MANAGER页面管理多个模型。我有以下关系:

Sites -> Buildings -> Meters -> Values

在每个“网站”项目旁边,我有“编辑|删除|添加建筑物” 在每个“建筑”项目旁边,我有“编辑|删除|添加仪表” 在每个“Meter”项目旁边,我有“编辑|删除|添加值” 在每个“价值”项目旁边,我有“编辑|删除”

此时我有一个名为“SiteManagerController”的frankensteined控制器来管理这个页面。我只是有一个方法(和路由文件中的相应路由),如下所示:

add_site
add_building_to_site
add_meter_to_building

delete_site
delete_building
delete_meter

然而,我想知道的是,是否存在使用现有项目控制器CRUD方法的质量机制,同时能够为“SiteManager”页面和控制器呈现适当的RJS文件?

如果我可以以某种方式路由到原始控制器(以便不必手动重写所有方法),同时还具有rails重定向控件(不仅仅是在视觉上,而是在上下文中)回到“SiteManager”控制器,这将是很好的创建或删除后。请记住,我不处理表单,只是一个INDEX页面和多个“link_to_remote”

我很可能会提出错误的问题,所以请考虑......无论如何,我愿意接受建议。

最佳。

1 个答案:

答案 0 :(得分: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