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

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

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

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

JSON

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

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1188閲覧

Railsのjbuilderでarrayを使いこなしたい!

chikaraueta

総合スコア16

Ruby

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

JSON

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

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/11/13 01:27

arrayを使ってproductとそれに関連するcategorieを取得するAPIを作りたいのですが自分が欲しい形で取得できません。
どなたか力を貸してください。

今書いているコード

product_controller.rb

Ruby

1module Api 2 class ProductsController < ApplicationController 3 def index 4 @product = Product.find(params[:id]) 5 @products = Product.where(brand_id: params[:id]) 6 @brand = Brand.find(params[:id]) 7 end 8 end 9end

index.json.jbuilder

java

1json.product do 2 json.array! @products, :id, :name, :price 3 4 json.categories do 5 json.array! @product.categories.map{|categories| categories[:name]} 6 end 7 8end

エラー画面

イメージ説明

ここで

java

1json.product do 2 json.array! @products, :id, :name, :price 3end 4 5json.categories do 6 json.array! @product.categories.map{|categories| categories[:name]} 7end

のように分けて書くとエラーはとれましたが

{ "product":[   {    "id":1,    "name":"CHUCK TAYLOR",    "price":14000   },   {    "id":2,    "name":"Jack Purcell",    "price":10000   }], "categories":["スニーカー","新作","スポーツ"] }

のようになりました。
しかし、欲しい値はproductの中にcategorieが入っている状態なので

{ "products": [ { "id": 1, "name": CHUCK TAYLOR, "price": 14000, "categories"["スニーカー","新作","スポーツ"] }, { "id": 2, "name": Jack Purcell, "price": 10000, "categories"["スニーカー", "新作","スポーツ"] } ] }

という形になります。
わかる方いましたら回答よろしくお願いします。

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

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

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

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

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

guest

回答2

0

json.products @products do |product| json.id product.id json.name product.name json.price product.price json.categories product.categories.pluck(:name) end

このような形でいかがでしょうか

投稿2018/11/13 09:24

haneru

総合スコア440

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

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

0

自己解決

java

1json.product do 2 json.array!(@products) do |product| 3 json.id product.id 4 json.name product.name 5 json.price product.price 6 json.categories do 7 json.array!(product.categories.map{|categories| categories[:name]}) 8 end 9 end 10end

これで解決しました!

投稿2018/11/13 09:21

chikaraueta

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問