私は次のモデルを持っています:
- 役職
- 鬼ごっこ
- TaggedPost (そこから Post と Tag が has_many :through によって関連付けを取得します)
そして、私は次のroutes.rb
ファイルを持っています:
resources :tags
resources :posts do
resources :tags
end
したがって、たとえば に移動すると、パラメーター配列に値が設定され/posts/4/tags
たタグ コントローラーのインデックス アクションが表示されます。post_id
涼しい。
私の質問は、投稿の下にネストされたタグ リソースにアクセスしているので、まだタグ コントローラーにアクセスする必要があるのでしょうか? または、この時点でタグのネストされた性質を処理するために、他のコントローラーをセットアップする必要がありますか? それ以外の場合は、タグ コントローラーに追加のロジックを組み込む必要があります。これはもちろん実行できますが、これはネストされたルートとリソースを処理する一般的な方法ですか? タグ コントローラーのインデックス アクションのコードは次のとおりです。
タグController.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
タグ リソースに関連付ける多くの追加リソースを計画しているため、このコントローラーのコードがますます大きくなっていることがわかります。これを打破する方法についての考えは?
質問の要約:
- リソースがネストされている場合、ネストされたリソースは、リソースのネストされた性質を表す別のコントローラーを通過する必要がありますか? これは、私が提供したコード例にあるように、通常のコントローラーを通過するのとは対照的です。
- もしそうなら、これらのコントローラはどのように名付けて設定するべきですか?
さらに情報が必要な場合はお知らせください。