2012-03-26 18 views
1

Ich habe ein Post Modell. Die Post könnte eine Art Frage, Antwort oder Kommentar sein (ähnlich der StackOverflow-Struktur). Momentan verarbeitet der Controller Anfragen an CRUD mit einem beliebigen Typ von Post. Es gibt eine Konvention, dass Controller in Rails dünn sein müssen, und mein Controller scheint diesem aufgrund der Case-Anweisungen (Post Typenauswahl und Handhabung) in keiner Aktion zu folgen. Also meine Frage: gibt es eine Möglichkeit, zu reorganisieren oder (noch besser) zu teilen Post Controller Question, Answer und Comment getrennt zu behandeln, aber eine gemeinsame Post Ansichten verwenden? Alle Links/Beispiele würden geschätzt werden.Schienen ein Modell - viele Steuerungen

Antwort

5

Sie können nur einen Controller von einem anderen erben:

Eine gemeinsame Steuerung:

class PostsController < ApplicationController 

    #here all the methods common for all types, if any 
    def new 
    @post = Post.new(:email => current_user.try(:email)) 
    end 
    ... 

end 

Dann in jedem Controller:

class AnswersController < PostsController 

    self.model_class = Post 

    # here all specific methods 
    def create 
    ... 
    end 
end 

Und alle Ansichten, die Sie in den Ordner halten posts, oder diejenigen, die in ihre eigenen Ordner anders sind

+0

danke, acce pte Lösung –