То, что у вас есть, прекрасно, но если вы хотите, вы можете использовать два разных действия. Этот подход должен позволить вам легче изменить представление позже, и он немного безопаснее.
match '/products/:product_id/reviews' => 'reviews#product_index'
match '/users/:user_id/reviews' => 'reviews#user_index'
Это также сделает код вашего контроллера немного чище и менее восприимчивым к нечетным запросам, таким как /products/10/reviews?user_id=100
, что приведет к тому, что вместо отзывов о продукте будут отображаться отзывы пользователей.
def product_index
@reviews = Review.find_all_by_product_id params[:product_id]
respond_with @reviews
end
def user_index
@reviews = Review.find_all_by_user_id params[:user_id]
respond_with @reviews
end
Другой альтернативой также является использование других контроллеров:
match '/products/:product_id/reviews' => 'product_reviews#index'
match '/users/:user_id/reviews' => 'user_reviews#index'