2016-07-22 18 views
0

次のパラメータをコントローラに渡します。どのように私はこれを処理することができます。ハッシュを処理し、パラメータ値に基づいてコントローラにリダイレクト

{"utf8"=>"✓", 
    "_method"=>"put", 
    "authenticity_token"=>"PG7U0PkCb1LViWkUWNV0lKuPWfVKM/Kl4T+zW4Eaaq8=", 
    "campaign"=>{"2"=>{"status"=>"Approved", 
    "notes"=>""}, 
    "1"=>{"status"=>"Approved", 
    "notes"=>""}}, 
    "Commit"=>"Process"} 

私の意図は、各キャンペーンを展開状況を読み、その内容に応じて、拒否し、承認コントローラにそのレコードをリダイレクトすることです。

+0

それぞれ試してみましたが、認識できませんでした。出力params [:campaign]が '{" 2 "=> {" status "=" Approved "、" notes "=>" "}、" 1 "=> {" status "=>" Approved " "notes" => ""}} '。正直に進む方法を知らない。 – EamonnMcElroy

+0

これまでのところテストの点でこれを得ました。 'params [:campaign] .each do | key、array |私は実際にこれが 'defの 認可をprocess_campaign書いて待っていましたが エンド end' – EamonnMcElroy

答えて

1

このような試みをしましたか?

params['campaign'].each do |id, attributes| 
    puts "Campaign id equals #{id} and status is #{attributes['status']}" 
    # Campaign.find(id).update(attributes) 

    if attributes['status'] == 'Approved' 
    reirect_to approved_campaign_path id 
    else 
    reirect_to rejected_campaign_path id 
    end 
end 
+0

配列あれば[::ステータス] == プット "が承認された" "{[状態]列}#{キー}は#です"! :operator、current_user.operator params [:campaign] .each do |キー、配列| もしアレイ【:ステータス] == "承認" redirect_toのnew_operator_applied_campaign_path(:CAMPAIGN_ID =>キー) ELSIF配列: redirect_toのreject_operator_campaign_path(キー) "拒否" [状態] ==、CAMPAIGN_NAME:キー 端 端 redirect_to operator_campaigns_path end' そうですね、私はあなたと同じように素晴らしい心を持っているので、あなたはチックを得るでしょう。しかし、ありがとう。 – EamonnMcElroy

+0

Redirect_toは、POSTではなくGETを実行しているため、このために失敗しています。助言がありますか。私はredirect_toを使ってPOSTで動作しないので、別の解決策が必要だと読んでいます。 – EamonnMcElroy

+0

AJAX経由でリクエストを送信し、javascriptを使用してユーザーを適切なページにリダイレクトすることができます。 – Inf

関連する問題