Ich habe folgende Modelle:Rails geschachtelte Ressourcen und Routing - wie Controller zu brechen?
- Beitrag
- Tag
- TaggedPost (von der Post und Tag leiten ihre Verbände durch has_many: durch)
Und ich habe die folgende routes.rb
Datei :
resources :tags
resources :posts do
resources :tags
end
Also wenn ich n. Avigieren Sie, sagen wir, /posts/4/tags
, die mich in die Index-Aktion für den Tag-Controller mit dem post_id
Wert im Parameter-Array gesetzt schießen wird. Cool.
Meine Frage ist, jetzt, da ich auf die geschachtelte Tags-Ressource unter Beiträge zugreifen, sollte ich den Tags-Controller immer noch treffen? Oder sollte ich zu diesem Zeitpunkt einen anderen Controller einrichten, der die geschachtelte Art von Tags behandelt? Ansonsten muss ich zusätzliche Logik in den Tags-Controller einbauen. Dies ist natürlich möglich, aber ist dies der übliche Weg, verschachtelte Routen und Ressourcen zu bearbeiten? Der Code, den ich in der Index-Aktion für die Etiketten controller haben, ist wie folgt:
TagsController.rb
def index
if params[:post_id] && @post = Post.find_by_id(params[:post_id])
@tags = Post.find_by_id(params[:post_id]).tags
else
@tags = Tag.order(:name)
end
respond_to do |format|
format.html
format.json {render json: @tags.tokens(params[:q]) }
end
end
ich den Code in diesem Controller sehen zunehmend groß, wie ich für viele weitere planen Ressourcen, die mit Tag-Ressourcen verknüpft werden sollen. Gedanken darüber, wie man das durchbricht?
Zusammenfassung der Fragen:
- Wenn eine Ressource verschachtelt ist, sollte die verschachtelte Ressource durch einen anderen Controller, die die verschachtelte Natur der Ressource sein? Dies steht im Gegensatz dazu, den normalen Controller zu durchlaufen, wie ich in dem Codebeispiel, das ich bereitgestellt habe, bin.
- Wenn ja, wie sollten diese Controller benannt und eingerichtet werden?
Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
Dies beantwortet tatsächlich den Kern meiner Frage ... Ich denke, die Logistik anders als das hängt wirklich auf meine Zwangsstörungen zu organisieren. –
Bitte, um Ihrer zukünftigen Kollegen willen (und Sie selbst!), Lesen Sie auch @lazel Antwort! – gfd
Ich werde einige hart verdiente Punkte ausgeben, um das zu senken. Bitte, fügen Sie bitte den verschachtelten Controller hinzu. – Drenmi