この問題を説明する方法がよくわからないので、明確にしようとします。
Rails アプリケーションには、顧客がクレジット カードの詳細を更新できるページがあります。詳細を確認するために、フォームが外部サービスに投稿されます。その後、透過的にリダイレクトされます。
最初は、テスト用に独自のコントローラーにフォームを持っていましたが (完全に機能しています)、users_controller 内に移動しました。
フォームが投稿され、いくつかのチェックを行う確認アクションにリダイレクトされます。ユーザーコントローラー内から投稿すると、エラーが発生します。
Couldn't find User with id=k2hx5p36w3g9rxsz
実際には、これはトランザクションの ID です。ユーザーではありません。
URL は次のようになります。
http://localhost:8080/settings/confirm?http_status=200&id=k2hx5p36w3g9rxsz&kind=update_payment_method&hash=9c85b12c1242cd58de27b2582c934e34a0e9455e6
私のコントローラーには、これがあります:
def billing
@user = current_user
@credit_card = current_user.default_credit_card
@tr_data = CreditCard::TransparentRedirect.update_credit_card_data(:redirect_url => confirm_credit_card_info_url, :payment_method_token => @credit_card.token)
...
end
def credit_card_confirm
@user = current_user
@result = CreditCard::TransparentRedirect.confirm(request.query_string)
if @result.success?
redirect_to user_billing_path, :notice => "Credit card updated"
else
render :action => "billing"
end
end
そして私のルートでは:
match '/settings/confirm' => 'users#credit_card_confirm', :as => :confirm_credit_card_info
IDをユーザーIDとして取得しないようにするにはどうすればよいですか?