Rails zagnieżdżone zasoby i routing - jak rozbić kontrolery?

Mam następujące modele:

SłupekEtykietkaTaggedPost (z którego Post i Tag czerpią swoje skojarzenia przez has_many: through)

I mam następująceroutes.rb plik:

resources :tags

resources :posts do
  resources :tags
end

Więc kiedy nawiguję, powiedzmy,/posts/4/tags, który zastrzeli mnie w akcji indeksu dla kontrolera Tag za pomocąpost_id wartość ustawiona w tablicy parametrów. Fajne.

Moje pytanie brzmi jednak, teraz, gdy mam dostęp do zasobu zagnieżdżonych tagów w postach, czy powinienem nadal naciskać kontroler Tags? A może powinienem skonfigurować inny kontroler do obsługi zagnieżdżonej natury tagów w tym momencie? W przeciwnym razie muszę zbudować dodatkową logikę w kontrolerze Tags. Można to zrobić oczywiście, ale czy jest to powszechny sposób obsługi zagnieżdżonych tras i zasobów? Kod, który mam w akcji indeksu dla kontrolera Tags, jest następujący:

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

Widzę, że kod w tym kontrolerze staje się coraz większy, ponieważ planuję powiązanie wielu dodatkowych zasobów z zasobami znaczników. Myśli o tym, jak to zrobić?

Podsumowanie pytań:

Jeśli zasób jest zagnieżdżony, czy zagnieżdżony zasób powinien przechodzić przez inny kontroler reprezentujący zagnieżdżony charakter zasobu? Jest to przeciwne przejściu przez normalny kontroler, jak w przykładowym kodzie, który podałem.Jeśli tak, w jaki sposób należy nazwać i skonfigurować te kontrolery?

Daj mi znać, jeśli potrzebujesz więcej informacji.

questionAnswers(2)

yourAnswerToTheQuestion