2016-07-25 77 views
0

我正致力於使用記錄顯示錶的功能,每個記錄帶有單選按鈕拒絕和批准。用戶選擇適當的單選按鈕並按下過程。控制權傳遞給process_campaigns。從這裏它分解數據並分析每個記錄的狀態。如果它被批准,它將重定向到批准塊並且與拒絕相同。在每次迭代中創建Campaign的新實例

以下參數傳遞:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"9TCExvCmDahAWGQloPdaRkSowbBaxZGwZnRa8sbNkWM=", "campaign"=>{"2"=>{"start_date"=>"2016-07-18 15:43:00", "end_date"=>"2016-10-15 12:20:00", "merchant_revenue"=>"10", "status"=>"Approved", "notes"=>""}, "1"=>{"start_date"=>"2016-07-15 12:20:00", "end_date"=>"", "merchant_revenue"=>"10", "status"=>"Approved", "notes"=>""}}, "Commit"=>"Process"} 

def process_campaign 
    authorize! :operator, current_user.operator 
    params[:campaign].each do |key, value| 
    if value[:status] == "Approved" 
     redirect_to approve_operator_campaign_path(key), :id => key, :start_date => value[:start_date], :revenue_mode => value[:revenue_model], :end_date => value[:end_date], :active => true, :status => 307 and return 
    elsif value[:status] == "Rejected" 
     redirect_to reject_operator_campaign_path(key), campaign_name: key, notes: value[:notes], :status => 307 and return 
    end 
    end 
    redirect_to operator_campaigns_path, flash: { notice: "Campaigns have been processed."} 
end 

def reject 
    authorize! :operator, current_user.operator 
    params[:campaign].each do |key, value| 
    if value[:status] = "Rejected" 
     @campaign = Campaign.active.where(id: key, operator_id: current_user.operator_id).last! 
     @campaign.data.merge!({:notes=>value[:notes]}) 
     @campaign.status = "Rejected" 
     @campaign.save(validate: false) 
    end 
    end 
end 

def approve 
    @campaign = Campaign.find(params[:id]) 
    params[:campaign].each do |key, value| 
    if value[:status] = "Approved" 
     @applied_campaign = AppliedCampaign.new(:campaign_id => key, :start_date => value[:start_date]||Time.now, :end_date => value[:end_date], :active => true) 
    end 
    end 
end 

時控制傳遞到批准或拒絕整個運動串與包含內,而我想單獨的每條記錄都記錄過去了,分別通過它的問題是。任何人都可以指出爲什麼整個廣告系列字符串被傳遞?

回答

0

移動路線幫手

redirect_to approve_operator_campaign_path(key, param_1: 1, param_2: 2) 
# Parameters: { "id"=>"2" "param_1"=>"1", "param_2"=>"2" } 

更改裏面的PARAMS你的方法:

def process_campaign 
    authorize! :operator, current_user.operator 
    params[:campaign].each do |key, value| 
    if value[:status] == "Approved" 
     redirect_to approve_operator_campaign_path(key, id: key, start_date: value[:start_date], revenue_mode: value[:revenue_model], end_date: value[:end_date], active: true, status: 307) and return 
    elsif value[:status] == "Rejected" 
     redirect_to reject_operator_campaign_path(key, campaign_name: key, notes: value[:notes], status: 307) and return 
    end 
    end 
    redirect_to operator_campaigns_path, flash: { notice: "Campaigns have been processed."} 
end 
+0

謝謝,但它現在說'沒有路由匹配[GET]「/運營/活動/ 2 /拒絕「'但我想POST/PUT到那條路。我需要改變什麼? – EamonnMcElroy

+0

檢查使用rake生成的路徑:路由 –

+0

用於operator_campaigns控制器的post/put批准操作 –

相關問題