質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

763閲覧

jsonでデータが取得できない

yamada_yuuki

総合スコア100

Stripe

Stripeとは、米国のオンライン決済システム提供企業、及び同社が提供する決裁システムを指します。Webサイトやモバイルアプリにコードを組み込むことでクレジットカードなどの決済サービスが簡潔に追加できます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/04 06:19

編集2020/10/04 06:43

railsを使いstripeの残高を表示したいのですがundefinedと表示されてしまいます。
何かわかる方は回答お願いします。

イメージ説明

log

1Started GET "/posts/mydata" for ::1 at 2020-10-04 15:42:26 +0900 2Processing by PostsController#mydata as */* 3 User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 8], ["LIMIT", 1]] 4 ↳ app/controllers/posts_controller.rb:108:in `set_notifications' 5 Notification Load (0.2ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."visited_id" = $1 AND "notifications"."checked" = $2 ORDER BY "notifications"."created_at" DESC LIMIT $3 [["visited_id", 8], ["checked", false], ["LIMIT", 10]] 6 ↳ app/controllers/posts_controller.rb:110:in `set_notifications' 7 Rendering posts/mydata.js.erb 8 Rendered posts/mydata.js.erb (Duration: 3.5ms | Allocations: 158) 9Completed 200 OK in 567ms (Views: 22.9ms | ActiveRecord: 0.5ms | Allocations: 6100)

データ構造はこんな感じです。

{ "object": "balance", "available": [ { "amount": 27056, "currency": "jpy", "source_types": { "card": 27056 } } ], "connect_reserved": [ { "amount": 0, "currency": "jpy" } ], "livemode": false, "pending": [ { "amount": -21394, "currency": "jpy", "source_types": { "card": -21394 } } ] }

jserb

1var data = <%== @balance %>; 2var result = '<div>' 3 result += data.pending.amount 4result += '</div>' 5$('#result').html(result);

data.pending.amountをdata.objectにしたら正しく表示されるので@balanceはあっていると思います。

htmlslim

1div#result 2 |no information... 3javascript: 4var f = function(){ 5 $.ajax({ 6 type: 'GET', 7 url: '/posts/mydata' 8 }); 9}; 10f();

rails6
ruby2.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2020/10/04 06:33

どう使ったらどこでエラーが起きたのか、を示さないと誰もわからないでしょう。 エラーは全文を。
yamada_yuuki

2020/10/04 06:37 編集

コメントありがとうございます。 エラーは出てません。コンソールを確認しても問題はありませんでした。ただundefinedと表示されるだけです。
winterboum

2020/10/04 06:38

それがエラーです。どこでなにがぐらいは出てるでしょう
winterboum

2020/10/04 06:44

本来は「どのfileの」「どの記述によって」「どのデータの」どの部分が」表示されるつもりだったのですか?
yamada_yuuki

2020/10/04 06:47

jserbの result += data.pending.amount により "pending": [ { "amount": -21394, "currency": "jpy", "source_types": { "card": -21394 } } ] のamountのデータが表示したいです。
winterboum

2020/10/04 07:33

@balance はどこで作ってますか
yamada_yuuki

2020/10/04 07:35

posts_controllerで def mydata @balance = Stripe::Balance.retrieve(stripe_account: current_user.stripe_user_id) end と作っています。
guest

回答1

0

ベストアンサー

Stripe は使ったことがないのですが、、、
「データ構造はこんな感じです。」からはデータは Hash構造のJSONです。

それが @balance.pending.amount という形で参照できるようにStripe::Balance.retrieveが処理してくれているのですか?

data["pending"]["amount"] で試してください。
もしかしたら
@balance = JSON.load Stripe::Balance.retrieve( )
が必要かもしれない

投稿2020/10/04 07:49

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamada_yuuki

2020/10/04 09:29 編集

data["pending"]["amount"] で JSON.loadありだと no information... のままでした。(.to_jsonも同じ) JSON.loadなしだと undefined のままでした。
winterboum

2020/10/04 10:17

ということは、やはり data.pending.amount ではなく、かつ JSONをHashに変換する必要があるってことですね
yamada_yuuki

2020/10/07 12:58

変死遅れました。すみません。 def mydata json = Stripe::Balance.retrieve(stripe_account: current_user.stripe_user_id).to_json hash = JSON.parse(json) @available = hash["available"][0]["amount"] @pending = hash["pending"][0]["amount"] end とすればできました。 一応Jsのほうも載せときます。 var data = <%== @available %>; var result = '' result += "現在" result += "<br>" result += "振り込み可能" result += "<br>" result += data += "円" result += '' $('#available').html(result); var data = <%== @pending %>; var result = '' result += "現在" result += "<br>" result += "振り込み不可" result += "<br>" result += data += "円" result += '' $('#pending').html(result);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問