Frage

Ich habe ein Modell Eigentum, die Unterklassen mit STI hat,

und die ich alle mag die gleichen Controller verwenden, mit nur anderer Sicht partials auf der Unterklasse abhängig.

Property
Restaurant < Property
Landmark < Property

Es funktioniert finden, außer ich bin nicht sicher, wie die Unterklasse in der Steuerung zu erkennen, die richtige Ansicht zu machen. D. h. / Restaurants arbeitet und auf die Eigenschaften Controller geht, aber ich kann nicht sagen, dass sie das Restaurant Unterklasse wollen?

map.resources :restaurant, :controller => :properties
map.resources :properties
War es hilfreich?

Lösung

Ein einfacher Weg, um das Problem zu fi wäre ein Sub-Controller zu erstellen:

class RestaurantsController < PropertiesController
end

In den Routen würden Sie Restaurants an den Restaurants Controller zugeordnet werden.

Update: Alternativ können Sie so etwas wie dies in Ihrem routes.rb versuchen:

map.resources :restaurants, :controller => :properties, :requirements => {:what => :Restaurant}
map.resources :properties, :requirements => {:what => :Property}

Dann können Sie ein, bevor der Filter verwenden params zu überprüfen [: was]. Und Änderungsverhalten entsprechend

Beispiel:

class PropertiesController < ApplicationController
  before_filter select_model

  def select_model
    @model = params[:what].constantize
  end

  def show
    @model.find(params[:id])
    ...
  end

  ...
end
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top