Frage

Ich bin die Verwaltung derzeit mehrere Modelle von einer einzigen BAULEITER Seite. Ich habe die folgenden Beziehungen:

Sites -> Buildings -> Meters -> Values

Neben jedem „Sites“ Artikel Ich habe „Bearbeiten | Löschen | hinzufügen Building“ Neben jedem „Gebäude“ Artikel habe ich „Bearbeiten | Löschen | Add Meter“ Neben jedem „Meter“ Artikel habe ich „Bearbeiten | Löschen | Wert hinzufügen“ Neben jedem „Value“ Artikel habe ich „Bearbeiten | Löschen“

An diesem Punkt habe ich eine frankensteined Controller „SiteManagerController“, die diese Seite verwaltet. Ich habe einfach ein Verfahren (und eine entsprechende Route in der Routen-Datei) wie folgt:

add_site
add_building_to_site
add_meter_to_building

delete_site
delete_building
delete_meter

Was ich frage mich jedoch, ob es ist ein Qualitäts Mechanismus, mit dem die bestehenden Artikel Controller CRUD Methoden zu verwenden, während der Lage, die entsprechende RJS-Datei für die „Sitemanager“ -Seite und Controller zu machen?

Es wäre schön, wenn ich könnte irgendwie Weg an den ursprünglichen Controller (um nicht manuell alle Methoden umschreiben zu müssen), während auch mit Schienen Steuer umleiten (nicht nur optisch, sondern kontextuell) zurück zum „Sitemanager“ Controller nach dem Erstellen oder Löschen. Beachten Sie, dass ich nicht mit Formen zu tun, sondern einfach eine Indexseite und mehrere „link_to_remote“ s

Ich bin ziemlich vielleicht die falsche Frage, so dass betrachten ... auf jedem Fall, ich bin offen für Vorschläge.

Best.

War es hilfreich?

Lösung

Sie können absolut verwenden, um die austretenden Artikel Controller CRUD Methoden. Sie können link_to_remote jeder URL verweisen, und es wird die HTML einfügen Sie es zu unterweisen. Solange Sie die Standard-Routen in routes.rb halten, sollte alles funktionieren. Dadurch wird der Benutzer auf der Seite Site halten, aber er wird mit den RESTful Routen hinter den Kulissen interagieren.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top