Ben şu yolları:Raylar Yolu birden yolları üzerinde kullanılabilir eylemi işlemek için
resources :users do
# List reviews made by user
resources :reviews, :only => [ :index ]
end
resources :products do
# List reviews by product, and provide :product_id for creation
resources :reviews, :only => [ :index, :new, :create ]
end
# Other actions don't depend on other resources
resources :reviews, :except => [ :index, :new, :create ]
Her şey ReviewsController#index
hariç sağ görünür:
def index
if params[:user_id]
@reviews = Review.find_all_by_user_id params[:user_id]
else
@reviews = Review.find_all_by_product_id params[:product_id]
end
respond_with @reviews
end
için standart bir çözüm var acaba Yukarıdaki sorun ya da bunu yapmak için daha iyi bir yol varsa.
Çok güzel öneri. Sanırım "RESTful eylemleri" zihniyetimden kurtulmalıyım. :) –
Bazen işe yarıyor, diğer zamanlarda işe yaramaz. Tamamen dinlendirici eylemlere sadık kalmak isterseniz, denetleyicinin üzerine yazabilirsiniz, bu nedenle de, bir ProductReviewsController ve huzurlu bir UserReviewsController olabilir. Tabii ki zaten bir çok istisnai ve sadece deyim kullanıyorsunuz, bu yüzden örnekte olduğu gibi, açık url eşleştirmeleri kullanmak sizin için en iyi çözüm olabilir. –
Bazılarının dinlenmeye çok fazla sarıldığını duydum ve bazen ayrılmanız gerektiğine katılıyorum, ama bu böyle bir zamana benzemiyor. Aslında, iki kontrolör yaparak, iki kaynağın dinlenme tarzına giriyorsunuz (sadece indeks eylemi). Bu durumda, bir kontrolörde tutar ve paramize uygun yükler. – DGM