Verschachtelte Ressourcen und Routing auf Schienen - Wie werden Controller getrennt?

Ich habe folgende Modelle:

PostEtikettTaggedPost (von dem Post und Tag ihre Assoziationen durch has_many ableiten: through)

Und ich habe folgendesroutes.rb Datei:

resources :tags

resources :posts do
  resources :tags
end

Also, wenn ich navigiere, sagen wir,/posts/4/tags, der mich in die Indexaktion für den Tag-Controller mit dem schießtpost_id Wert, der im Parameter-Array festgelegt wurde. Cool.

Meine Frage ist jedoch, ob ich nach dem Zugriff auf die verschachtelte Tags-Ressource unter Posts immer noch auf den Tags-Controller tippe. Oder sollte ich einen anderen Controller einrichten, um die Verschachtelung von Tags an dieser Stelle zu handhaben? Ansonsten muss ich zusätzliche Logik in den Tags-Controller einbauen. Das kann natürlich gemacht werden, aber ist dies die übliche Art, mit verschachtelten Routen und Ressourcen umzugehen? Der Code, den ich in der Indexaktion für den Tags-Controller habe, lautet 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 kann feststellen, dass der Code in diesem Controller immer größer wird, da viele zusätzliche Ressourcen mit Tag-Ressourcen verknüpft werden sollen. Überlegungen, wie man das herausbricht?

Zusammenfassung der Fragen:

Wenn eine Ressource verschachtelt ist, sollte die verschachtelte Ressource einen anderen Controller durchlaufen, der die verschachtelte Natur der Ressource darstellt? Dies ist im Gegensatz zu der normalen Steuerung, wie ich sie in dem von mir bereitgestellten Codebeispiel sehe.Wenn ja, wie sollten diese Controller benannt und eingerichtet werden?

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage