2014-09-01 79 views
1

在我的申请,我想打它,所以它有可能对产品或卖方自身内部管理销售佣金,所以我的路线是这样的:嵌套资源共享相同的控制器

resources :sellers do 
    resources :commissions 
end 

resources :products do 
    resources :commissions 
end 

和我的网址会如:

/products/:product_id/commissions/:id(.:format) 
/sellers/:seller_id/commissions(.:format) 

但是,当请求从一个产品或一个正在添加卖家,所以我可以根据PRODUCT_ID或seller_id设置我的佣金怎么能我,我CommissionsController里面知道吗?

感谢咨询

回答

0

你可以只检查或者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 
4

你可以尝试:

resources :sellers, model: 'Seller' do 
    resources :commissions 
end 

resources :products, model: 'Products' do 
    resources :commissions 
end 

然后在控制器获得modelid liek这样的:

model = params[:model].constantize 
id = params[params[:model].foreign_key] 
相关问题