ユーザーが質問をして専門家に回答してもらうRailsアプリがあります。質問と回答のモデルに加えて、アプリは次の方法でカテゴリを追跡します
Question.rb
has_many :categorizations
has_many :categories, through: :categorizations
カテゴリー.rb
has_many :categorizations
has_many :questions, through: :categorizations
分類.rb
belongs_to :question
belongs_to :category
今、私は localhost:3000/categories にアクセスして、質問のあるすべてのカテゴリのリストを確認できます。ただし、カテゴリは重要ですが、質問の性質上、カリフォルニア州の誰かがニューヨークについての質問に答えられる可能性は低いため、あまり実用的ではありません。したがって、場所によっても質問をフィルタリングしたいと思います。URLを設定する最良の方法は次のようになると思います
localhost:3000/state/ny/categories
ネストされたルートを作成することでできることを理解しています (たとえば、場所のリソースを作成した場合)
resources :states do
resources :categories
end
そのため、もともと場所を質問モデルのフィールドとして保存していましたが、現在は場所モデルを作成しました (「状態」が予約語である場合は、よくわかりませんでした)。やった
Location.rb
has_many :questions
Question.rb
belongs_to :locations
また、ネストされたルーティングも行ったので、州ごとにカテゴリをフィルタリングできました
resources :locations do
resources :categories
end
ただし、場所とカテゴリの間の関連付けを作成していないことに気付くでしょう。したがって、このルートに移動すると
http://localhost:3000/locations/ny/categories
index.html.erb ビュー ページに、各カテゴリにいくつの質問があるかが表示されている場合
<% @categories.each do |category| %>
<div class="category">
<h5><%= link_to category.name, category %></h5>
<%= pluralize category.questions.size, "question" %>
</div>
<% end %>
場所によってフィルタリングされていません。たとえば、場所に関係なくすべての質問をカウントします。場所をフィルタリングするロジックをビューに追加しない限り、このようなルートを使用してもメリットはありません。
カテゴリの代わりに、質問を入れ子にしてみましたが、明らかに何も変わりません。
resources :locations do
resources :questions
end
私がやろうとしていることを見ることができると思います。どうすればいいのか教えてください。
たとえば、場所とカテゴリの間の関連付けを作成する必要がありますか? もしそうなら、私が持っているその結合モデルでどのように機能しますか? または、場所ごとにカテゴリにリストされている質問または質問をフィルタリングする方法を教えてください。
いくつかのポインタを提供できれば感謝します。