0

ログインしたユーザーではなく、ビューからuser_idを渡す必要があります。

私は管理者の部分を書いています。

ユーザーのメールアドレスを使用してPOSTリクエストを行い、適切なページにリダイレクトしています。だから私は次のようなルートを作りたいです:

     /:user_id/pay

適切なユーザーの支払いアクションを呼び出します。

私の見解では、電子メールとこのアクションへのリンクを表示したいと思います。

<% @users.each do |user| %>
 <li>
  <%= user.email %>
  <%= link_to "Pay", some_controller_pay(user.id) %>
 </li>

編集

    def pay
    require 'httpclient'
    require 'xmlsimple'
    clnt = HTTPClient.new
    user = User.find(params[:user_id])
    credentials = {
        'USER' => 'payer_1342623102_biz_api1.gmail.com',
       'PWD' => '1342623141',
       'SIGNATURE' => 'Ay2zwWYEoiRoHTTVv365EK8U1lNzAESedJw09MPnj0SEIENMKd6jvnKL '
     }

    header =  {"X-PAYPAL-SECURITY-USERID" => "payer_1342623102_biz_api1.gmail.com",
                   "X-PAYPAL-SECURITY-PASSWORD" => "1342623141",
                   "X-PAYPAL-SECURITY-SIGNATURE" => "Ay2zwWYEoiRoHTTVv365EK8U1lNzAESedJw09MPnj0SEIENMKd6jvnKL ",
                   "X-PAYPAL-REQUEST-DATA-FORMAT" => "NV",
                   "X-PAYPAL-RESPONSE-DATA-FORMAT" => "XML",
                   "X-PAYPAL-APPLICATION-ID" =>  "APP-80W284485P519543T"
                    }
    data = {"actionType" => "PAY",
               "receiverList.receiver(0).email"=> user.email,
               "receiverList.receiver(0).amount" => "10",
               "currencyCode" => "USD",
               "cancelUrl" => root_path,
               "returnUrl" => root_path,
               "requestEnvelope.errorLanguage" => "en_US"}
    uri = "https://svcs.sandbox.paypal.com/AdaptivePayments/Pay"
    res = clnt.post(uri, data, header)
    @xml = XmlSimple.xml_in(res.content)
    @payKey = @xml["payKey"].to_s()
    @payKey = @payKey.tr("[]", "")
    @payKey = @payKey[1..20]
    redirect_to "https://sandbox.paypal.com/webscr?cmd=_ap-payment&paykey=#{@payKey}"

PayPalは、エラーが発生したと言っています

私は変数を調べようとしているので、次のことを確認する必要があります。

 <%= @xml%>
 <%= payKey%>

しかし、idは機能しません、どうすればそれらを検査できますか?

開発ログ:

  Redirected to https://sandbox.paypal.com/webscr?cmd=_ap-payment&paykey=
  Completed 302 Found in 1193ms (ActiveRecord: 1.0ms)

それで、それはリンクを挿入しません、そうですか?すべての回答情報を取得する方法

どうすればこれを行うことができますか?

4

2 に答える 2

2

すでにモデルがあるので、別のRESTfulアクションUserとして追加できます:pay

resources :users do
  member do
    get 'pay' # or post/put, whatever is appropriate
  end
end

これにより、名前付きルートが自動的に設定されますpay_user

pay_user GET    /users/:id/pay(.:format)  users#pay

pay_user_pathあなたの意見のためのヘルパーを含める:

<%= link_to "Pay", pay_user_path(user.id) %>

UserControllerこれは他のアクションと同じように機能します。

def pay
  @user = User.find(params[:id])
  # do something with @user
end
于 2012-07-20T07:39:08.900 に答える
1

ルート.rb

match "/:user_id/pay" => "some_controller#pay", :as => "some_controller_pay"

some_controller.rb

def pay
  user = User.find(params[:user_id])
  ....
于 2012-07-20T07:30:27.520 に答える