前提・実現したいこと
Pay.jpで決済機能を実装しています。
その一環としてクレジットカード登録機能を実装したいです。
しかし下記の表示が出ており、先に進めない状態です。
発生している問題・エラーメッセージ
=> "sk_test_***" [2] pry(CardsController)> params['payjp_token'] NameError: undefined local variable or method `params' for CardsController:Class from (pry):2:in `<class:CardsController>' [3] pry(CardsController)> exit Processing by CardsController#pay as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"gp/XP+s***4+jPjPj9/TVDvHPAXlyLUKg==", "payjp_token"=>"${response.id}", "card_token"=>"${response.card.id}"} ``` ### 該当のソースコード ```ruby Rails.application.routes.draw do resources :cards, only: [:new, :show] do collection do post 'show', to: 'cards#show' post 'pay', to: 'cards#pay' post 'delete', to: 'cards#delete' end end end ``` ```ruby class CardsController < ApplicationController before_action :require_login require 'payjp' def new Payjp.api_key = ENV['PAYJP_SECRET_KEY'] @card = Card.where(user_id: current_user.id) end # payjpとCardのデータベース作成 def pay Payjp.api_key = ENV["PAYJP_SECRET_KEY"] if params['payjp_token'].blank? redirect_to action: "new" else customer = Payjp::Customer.create( card: params['payjp_token'], metadata: {user_id: current_user.id} ) @card = Card.new( user_id: current_user.id, customer_id: customer.id, card_id: customer.default_card ) if @card.save redirect_to action: "show" else redirect_to action: "pay" end end end end ``` ```coffeescript $(window).bind 'turbolinks:load', -> if document.URL.match(/cards/) console.log() # if document.getElementById('info-submit') != blank payjp = payjp('pk_test_***') elements = payjp.elements() numberElement = elements.create('cardNumber') expiryElement = elements.create('cardExpiry') cvcElement = elements.create('cardCvc') numberElement.mount '#number-form' expiryElement.mount '#expiry-form' cvcElement.mount '#cvc-form' submit_btn = $('#info-submit') submit_btn.click (e) -> e.preventDefault() payjp.createToken(numberElement).then (response) -> if response.error alert response.error.message regist_card.porp 'disabled', false else alert '登録が完了しました' $('#card_token').append('<input type="hidden" name="payjp_token" val(response.id)>, <input type="hidden" name="card_token" val(response.card.id)>') # $('#card_token').append('<input type="hidden" name="payjp_token">'.value(response.id)) $('#card_form')[0].submit() $('#card_number').removeAttr 'name' $('#cvc-form').removeAttr 'name' $('#exp_month').removeAttr 'name' $('#exp_year').removeAttr 'name' return return # return return ``` ```html <div class = "card-new-wrapper"> <div class = "container"> <div class = "row"> <div class = "col-md-offset-3 col-md-6"> <h1 class = "text-center">クレジットカード登録</h1> <hr class = "hr-color"> <% if @card.present? %> <h3 class = "text-center">既に登録されています</h3> <% else %> <div class = "card-new"> <div class = "form-group"> <h4 class = "card-new-number-tag">カード番号</h4> <div id = "number-form", class = "payjs-outer"></div> <div class = "card-image"> <%= image_tag 'cards/VISA.png' %> <%= image_tag 'cards/MasterCard.png' %> <%= image_tag 'cards/JCB.png' %> <%= image_tag 'cards/AmericanExpress.png' %> <%= image_tag 'cards/DinersClub.png' %> <%= image_tag 'cards/Discover.png' %> </div> <h4 class = "card-new-exp-tag">有効期限</h4> <div id = "expiry-form", class = "payjs-outer"></div> <h4 class = "card-new-cvc-tag">セキュリティーコード</h4> <div id = "cvc-form", class = "payjs-outer"></div> </div> </div> <div class = "form-group"> <%= form_with url: pay_cards_path,method: :post, id: "card_form" do |f| %> <div id = "card_token"> <%= f.submit "登録する", class: "btn btn-outline-secondary btn-black", id: "info-submit" %> </div> <% end %> </div> <% end %> </div> </div> </div> </div> ``` ### 試したこと ・javascriptに書き直し ・turbolinksの削除 ### 補足情報(FW/ツールのバージョンなど) ruby 2.6.3 Rails 5.2.4.5 Pay.jpはv2を使用しています。 記載が足りなければご指摘いただけますと幸いです。 よろしくお願いいたします。
あなたの回答
tips
プレビュー