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

Sites -> Buildings -> Meters -> Values

在每个“网站”旁边项目我有“编辑|删除|添加建筑物“ 在每个“建筑物”旁边项目我有“编辑|删除|添加仪表“ 除了每个“米”之外。项目我有“编辑|删除|添加价值“ 除了每个“价值”之外。项目我有“编辑|删除"

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

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

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

最佳。

有帮助吗?

解决方案

您绝对可以使用现有的项目控制器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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top