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

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

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

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

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

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1399閲覧

Railsで楽天商品検索APIを使用しているが商品がviewに表示されない

shouhei1

総合スコア10

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

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

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/06/02 13:37

前提・実現したいこと

1 railsアプリで楽天商品検索APIを使用していてパラメータとしては返ってきているが表示方法がわからないです。
2 if.@items.present?で@itemsの有無を確認している。binding.pryで確認すると値はあるがelse側が実行されてしまう。

該当code

views/reads/search.html.erb

<h1>楽天商品検索のテスト</h1> <div class="uk-child-width-1-2@m" uk-grid> <% if @items.present? %> <% @items.first(10).each do |item| %> <%= item %> <% end %> <% else %> <p>該当の書籍は見つかりません</p> <% end %> </div>

reads_controller.rb

class ReadsController < ApplicationController before_action :require_user_logged_in def search #書籍の検索機能に使用する if params[:keyword] @items = RakutenWebService::Ichiba::Item.search(keyword: params[:keyword]) # This returns Enumerable object end end 省略 end

検索フォームのnavber

<div class="uk-navbar-right"> <%= form_with(url: reads_search_path, method: :get) do |f| %> <%= f.label :keyword, 'キーワード検索' %> <%= f.text_field 'keyword', id: params[:keyword] %> <%= f.submit "検索" %> <% end %> </div>

routes.rb

Rails.application.routes.draw do ##該当箇所のみ表示 root to: 'toppages#index' get 'reads/search' end

検索実行時のbinding.pryでのparameter値

1: <h1>楽天商品検索のテスト</h1> 2: <div class="uk-child-width-1-2@m" uk-grid> 3: <% if @items.present? %> 4: <% @items.first(10).each do |item| %> 5: <% binding.pry %> => 6: <%= item %> 7: <% end %> 8: 9: <% else %> 10: <p>該当の書籍は見つかりません</p> 11: <% end %> [1] pry(#<#<Class:0x00007fbfe21d8928>>)> item => #<RakutenWebService::Ichiba::Item:0x00007fbfeae50158 @params= {"mediumImageUrls"=>["https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3977/9784774193977.jpg?_ex=128x128"], "pointRate"=>1, "shopOfTheYearFlag"=>0, "affiliateRate"=>3, "shipOverseasFlag"=>0, "asurakuFlag"=>1, "endTime"=>"", "taxFlag"=>0, "startTime"=>"", "itemCaption"=> "言語仕様からテスト駆動開発・デバッグ技法まで Software Design plusシリーズ 伊藤淳一(プログラミング) 技術評論社プロ オ メザス ヒト ノ タメノ ルビー ニュウモン イトウ,ジュンイチ 発行年月:2017年12月 予約締切日:2017年11月24日 ページ数:471p サイズ:単行本 ISBN:9784774193977 伊藤淳一(イトウジュンイチ) 1977年生まれ。大阪府豊中市出身。学生時代はミュージシャンを志し、就職もせずにバンド活動を続けていたが、ひょんなきっかけでIT業界に就職。Sler、社内SEを経て、2012年から株式会社ソニックガーデンでRubyプログラマとしてのキャリアをスタート。ブログやQiitaなどで公開したプログラミング関連の記事多数(本データはこの書籍が刊行された当時に掲載されていたものです) 本書を読み進める前に/Rubyの基礎を理解する/テストを自動化する/配列や繰り返し処理を理解する/ハッシュやシンボルを理解する/正規表現を理解する/クラスの作成を理解する/モジュールを理解する/例外処理を理解する/yieldとProcを理解する/Rubyのデバッグ技法を身につける/Rubyに関するその他のトピック Railsをやる前に、Rubyを知ろう。みなさんが「Rubyをちゃんと理解しているRailsプログラマ」になれるように、Rubyの基礎知識から実践的な開発テクニックまで、丁寧に解説します。 本 パソコン・システム開発 プログラミング その他", "catchcopy"=>"【楽天ブックスならいつでも送料無料】", "tagIds"=>[], "smallImageUrls"=>["https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3977/9784774193977.jpg?_ex=64x64"], "asurakuClosingTime"=>"12:00", "imageFlag"=>1, "availability"=>1, "shopAffiliateUrl"=>"", "itemCode"=>"book:18852922", "postageFlag"=>0, "itemName"=>"プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ) [ 伊藤淳一(プログラミング) ]", "itemPrice"=>3278, "pointRateEndTime"=>"", "shopCode"=>"book", "affiliateUrl"=>"", "giftFlag"=>0, "shopName"=>"楽天ブックス", "reviewCount"=>2, "asurakuArea"=>"群馬県/埼玉県/千葉県/東京都/神奈川県/新潟県/山梨県/長野県/岐阜県/静岡県/愛知県/三重県/滋賀県/宮城県/福島県/茨城県/栃木県", "shopUrl"=>"https://www.rakuten.co.jp/book/", "creditCardFlag"=>1, "reviewAverage"=>4.5, "shipOverseasArea"=>"", "genreId"=>"209129", "pointRateStartTime"=>"", "itemUrl"=>"https://item.rakuten.co.jp/book/15209044/"}>

デバッグ状態ではなく正常に終了した際のターミナル上でのログ

Started GET "/reads/search?utf8=%E2%9C%93&keyword=Ruby&commit=%E6%A4%9C%E7%B4%A2" for ::1 at 2021-06-02 22:23:35 +0900 Processing by ReadsController#search as JS Parameters: {"utf8"=>"✓", "keyword"=>"Ruby", "commit"=>"検索"} User Load (0.9ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 9 LIMIT 1 ↳ app/helpers/sessions_helper.rb:3 Rendering reads/search.html.erb within layouts/application Rendered reads/search.html.erb within layouts/application (1020.9ms) Rendered layouts/_navbar.html.erb (31.6ms) Rendered layouts/_flash_messages.html.erb (16.4ms) Completed 200 OK in 1487ms (Views: 1459.1ms | ActiveRecord: 0.9ms)

サイトの表示

!イメージ説明明](19f34b03d0592225c9246813b6d456e3.png)

試したこと

<% item.name %>などをviewで実行したが何も表示されず、search.html.erbのif文でelse値が毎回返ってきてしまいましたpatameterでは値の取得ができているので表示できそうな気がするのですが、すいませんわかりませんでしたご教授していただけると助かります.

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

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

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

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

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

FKM

2021/06/03 01:27 編集

これ、コントローラからビューに値を返していますか?いくらビューに記述しても、コントローラ側で返す用意しないと返りませんよ。 配送されない荷物を郵便受けで待っているようなものです。
winterboum

2021/06/03 14:02

不思議なのですが、<% binding.pry %> が実行されているのですから、elseではなく if の方を実行しているようにみえるのですが?
shouhei1

2021/06/03 15:17

僕もif側の挙動が実行される気がするのですが表示がelseの内容として返ってきてるので意味がわかりません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問