楽天APIから取得した情報を変数に格納してビューで表示したいが、なぜか変数が代入できずnilになるため表示できない

実現したいこと

現在、ruby on railsにてサービス(PF)の開発を進めているのですが、楽天APIから取得したデータをビューファイルにて表示するところで詰まっているので問題を解決したいです。

長らく苦戦しているので、有識者の方がいらっしゃいましたら助言をいただけるとすごく助かります。よろしくお願い申し上げます。

楽天APIの導入は初めてだったので、下記のQiitaの記事を参考にさせていただきながら導入を進めてみました。

参考にしたQiita記事

発生している問題・分からないこと

楽天APIからの情報をItemsコントローラー内で処理・インスタンス変数へ代入して、ビューで表示できるようにしたいのだがなぜか中身がnilになるためビューで表示することができない。

該当のソースコード

items_controller.rb

1class ItemsController < ApplicationController 2 3 def search 4 @items = [] 5 6 @keyword = params[:keyword] 7 if @keyword.present? 8 results = RakutenWebService::Ichiba::Item.search({ 9 keyword: @keyword, 10 hits: 20, 11 }) 12 13 results.each do |result| 14 item = Item.new(read(result)) 15 @items << item 16 end 17 end 18 end 19 20 private 21 22 def read(result) 23 { 24 image: result['mediumImageUrls'][0], 25 name: result['itemName'], 26 price: result['itemPrice'], 27 rakuten_url: result['itemUrl'], 28 item_code: result['itemCode'], 29 review_count: result['reviewCount'], 30 review_average: result['reviewAverage'] 31 } 32 end 33 34end

itemsテーブル

1class CreateItems < ActiveRecord::Migration[6.0] 2 def change 3 create_table :items do |t| 4 t.string :name 5 t.integer :price 6 t.string :rakuten_url 7 t.string :image 8 t.string :item_code, null: false 9 t.integer :review_count 10 t.float :review_average 11 12 t.timestamps 13 end 14 end 15end

試したこと・調べたこと

上記の詳細・結果

下記のようにデバックを行い、read(result)やItem.new(read(result))の部分で処理がうまくいっていないかを確認しましたが、処理に問題はなさそうでした。それでも変数itemはnilになります。ちなみに、下記は検索フォームにrubyと入れた場合になります。

また、ChatGPTに質問を投げてみたり、同様の問題で苦戦した経験のある人がいないかを探してみたりしましたが、有力な情報を得ることができずに丸2日ほど経過しております。

3: def search 4: @items = [] 5: 6: @keyword = params[:keyword] 7: if @keyword.present? 8: results = RakutenWebService::Ichiba::Item.search({ 9: keyword: @keyword, 10: hits: 20, 11: }) 12: 13: results.each do |result| 14: binding.pry => 15: item = Item.new(read(result)) 16: @items << item 17: end 18: end 19: end [1] pry(#<ItemsController>)> read(result) => {:image=> "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4373/9784297124373_1_5.jpg?_ex=128x128", :name=>"プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで [ 伊藤 淳一 ]", :price=>3278, :rakuten_url=> "https://hb.afl.rakuten.co.jp/hgc/g00q072f.tex8x5f1.g00q072f.tex8ybd5/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16908719%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F20485471%2F", :item_code=>"book:20485471", :review_count=>0, :review_average=>0} [2] pry(#<ItemsController>)> Item.new(read(result)) => #<Item:0x000000010f49d918 id: nil, name: "プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで [ 伊藤 淳一 ]", price: 3278, rakuten_url: "https://hb.afl.rakuten.co.jp/hgc/g00q072f.tex8x5f1.g00q072f.tex8ybd5/?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F16908719%2F&m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F20485471%2F", image: "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/4373/9784297124373_1_5.jpg?_ex=128x128", item_code: "book:20485471", review_count: 0, review_average: 0.0, created_at: nil, updated_at: nil> [3] pry(#<ItemsController>)> item => nil

補足

ruby v3.1.0
rails v6.0.3

コメントを投稿

0 コメント