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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 5

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

JSON

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

Q&A

1回答

263閲覧

ruby on railsでAPI作成しているのですがjsonデータの扱い方がわかりません。

k.lolo

総合スコア4

Ruby on Rails 5

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

JSON

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

0グッド

0クリップ

投稿2023/05/15 05:16

ruby on rails を使ってwebAPIを作成しています。
controllerで#indexで全てのデータベースから値を取得しjson方式で表示しようと考えていますが思った通りにいきません。なぜうまくいかないのでしょうか?以下のソースコードでは{
"stock": [
{
"id": 19,
"name": "ko",
"amount": 200,
"price": null,
"created_at": "2023-05-14T16:50:51.614Z",
"updated_at": "2023-05-14T16:50:51.614Z"
},
{
"id": 18,
"name": "xxx",
"amount": 100,
"price": null,
"created_at": "2023-05-14T16:49:54.431Z",
"updated_at": "2023-05-14T16:49:54.431Z"
}
]
}

と表示されてしまいますが全てのデータベースを取得し、
{"ko":200,"xxx":100…}のようにrender json: で表示したいのですがどのようにコードを修正すればよろしいでしょうか?よろしくお願いいたします。

該当のソースコード

def index stocks = Stock.order(:name) render json: {stock: stocks} end

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

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

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

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

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

maisumakun

2023/05/15 05:18

どこまで実行して、どのような箇所で引っかかっている状況でしょうか?
k.lolo

2023/05/15 05:34

controllerで#indexで全てのデータベースから値を取得しjson方式で表示しようと考えていますがjson形式のデータを扱うのに慣れておらず思ったような表示ができません。 表示したい内容としては{"ko":200,"xxx":100…}のようにnameの値とamountの値を表示したいです。よろしくお願いいたします。
maisumakun

2023/05/15 06:05

> json形式のデータを扱うのに慣れておらず思ったような表示ができません。 質問文のコード以外に、どのような形で試してみましたか?
k.lolo

2023/05/15 06:17

def index stocks = Stock.order(:name) stocks.each do |stock| render json: {stock["name"] => stock["amount"]} end end で試してみましたがエラーが出ます。
maisumakun

2023/05/15 07:42

どのようなエラーが出ましたか?
k.lolo

2023/05/15 09:13

def index array = [] Stock.all.each do |stock1| array << stock1.name: stock1.amount end render json: {array} end と入力した結果 "error": "Internal Server Error", "exception": "#<SyntaxError:\"/Users/ka-osugi/Desktop/kanri1/app/controllers/v1/stocks_controller.rb:18: syntax error, unexpected ':', expecting `end' or dummy end\\n... array << stock1.name: stock1.amount\\n... ^\\n/Users/ka-osugi/Desktop/kanri1/app/controllers/v1/stocks_controller.rb:20: syntax error, unexpected '}', expecting =>\\n render json: {array}\\n ^\\n/Users/ka-osugi/Desktop/kanri1/app/controllers/v1/stocks_controller.rb:36: syntax error, unexpected `end'\\n end\\n ^~~\\n\">", というエラーが出ました。
guest

回答1

0

こんな感じでしょうか

ruby

1render json: stocks.map { |stock| { stock.name => stock.amount } }

map は Block の中で返された値を配列にする method です。
※ Block 内の return は省略しています
例)

ruby

1[1,3,5,7].map { |v| v + 10 } 2=> [11, 13, 15, 17]

投稿2023/05/19 08:13

satoshih

総合スコア797

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問