LoginSignup
0
3

More than 3 years have passed since last update.

[rails,payjp]カード登録の際に登録画面をリロードしないとトークンを作成できない時の解決例

Posted at

1.原因

今回の筆者の問題はturbolinksが効いていたからでした。

2.なぜ起こった?

理由は、turbolinksの機能が影響範囲ページの遷移を非同期で行う(影響範囲の全てのviewページが合わさって1ページとして扱う)ためでした。
他画面を経由し複数で情報を持った状態でクレジットカードの登録をしようとすると、悪意のある情報を持っている危険性があり安全性を保てないと見なされてしまいpayjpからの返答を受けることができなくなっていました。

3.解決方法

クレジットカード登録画面のみturbolinks(非同期通信)を切ってページ遷移するように記述することで筆者は解決しました。

具体的にはapp/views/layouts/apprication.html.haml(全体のbodyの記述部分)app/views/cards/index(ページ遷移元)を下記のように修正しました

app/views/layouts/apprication.html.haml
〜前略(header部分の記述は省略します)〜

%body
    - if content_for?(:body_attributes)
      = yield(:body_attributes)
    = render 'layouts/notification'
    = yield
app/views/cards/index
〜前略〜
= link_to "/cards/new", class: 'method-of-payment__body__button__icon',"data-turbolinks": false do
#app/views/cards/newに遷移する記述の部分に "data-turbolinks": false をつけました
〜後略〜

4.参考記事

https://gist.github.com/saboyutaka/8727377
https://qiita.com/Cheekyfunkymonkey/items/216bf7426493e6213927
https://qiita.com/keitah/items/05f02efe4e11ab2473e8

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3