嵌套资源共享同一个控制器
在我的申请中,我想做到这一点,以便可以管理产品或卖家本身的卖家佣金,所以我的路线看起来像这样:
resources :sellers do resources :commissions end resources :products do resources :commissions end
我的url就像:
/products/:product_id/commissions/:id(.:format) /sellers/:seller_id/commissions(.:format)
但是,我如何在我的CommissionsController中知道请求何时来自产品或卖方,以便我可以根据product_id或seller_id设置我的佣金?
谢谢你的建议
你可以检查是否存在params[:product_id]
或params[:seller_id]
:
#app/controllers/commissions_controller.rb class CommissionsController < ApplicationController before_action :set_model def index @commissions = @model.find @id end private def set_model case true when params[:seller_id] model = "Seller" when params[:product_id] model = "Product" end @model = model.constantize @id = model end end
你可以尝试:
resources :sellers, model: 'Seller' do resources :commissions end resources :products, model: 'Products' do resources :commissions end
然后在控制器获取model
和id
谎言:
model = params[:model].constantize id = params[params[:model].foreign_key]