はじめに
今回楽天のAPIを使用してページ取得などをしてみたので
こちらも記述していきます。
githubも日本語版があってありがたや。
開発環境
macOS Big Sur 11.2.1
Ruby 2.6.5
Rails 6.1.1
実装
まずはGemをインストールします。
gem 'rakuten_web_service'
「bundle」でインストールをしていきます。
bundle
アプリケーションIDが必要なのでアプリケーションの登録をします。↓
登録するとIDが取得できます
config
「config」の「initializers」に記述します。
RakutenWebService.configure do |c|
c.application_id = 'アプリケーションID' # (必須)
c.affiliate_id = 'アフィリエイトID' # (任意)
c.max_retries = 3 # リクエストのリトライ回数(任意)
c.debug = true # デバッグモード (任意)
end
IDは公開しないように注意です。
routes
Rails.application.routes.draw do
# (他は省略しています)
get 'rakuten_search' => 'goods#search'
end
controller
「params」で「keyword」を受け取るようにします。
class GoodsController < ApplicationController
def search
if params[:keyword]
@goods = RakutenWebService::Ichiba::Item.search(keyword: params[:keyword])
end
end
end
view
viewを記述していきます。
<!-- 検索をしたいものを入力する部分 -->
<div class='goods-content'>
<div class="search-box">
<%= form_with url: rakuten_search_path, method: :get do |f| %>
<%= f.text_field :keyword %>
<%= f.submit '検索' %>
<% end %>
</div>
</div>
<!-- 表示する部分 -->
<div class="goods-search-main">
<div class="goods-search-box">
<ul>
<% if @goods.present? %> <!-- (10)は商品を出力する個数 -->
<% @goods.first(10).each do |item| %>
<div class="goods-list">
<div class="goods-img">
<li><img src="<%= item['mediumImageUrls'][0] %>"></li>
</div>
<div class="goods-list-right">
<div class="goods-name">
<li><a href="<%= item['itemUrl'] %>" target="_blank"><%= item['itemName'] %></a></li>
</div>
<div class="goods-price">
<li><%= item['itemPrice'] %>円</li>
</div>
</div>
</div>
<% end %>
<% end %>
</ul>
</div>
</div>
</div>
そうするとこのように情報を取得することができます。
商品表示
表示のみバージョンも、Githubを見本にして記述していきました。
controller変更
class GoodsController < ApplicationController
def search
@goods = RakutenWebService::Ichiba::Item.search(keyword: 'Ruby')
end # ↑こことか変更
end
お手本通りにrubyを入れてみます。
viewを変更
ここはとりあえず消すだけ。
<!--検索する部分を削除-->
<!-- 表示する部分だけを残す -->
<div class="goods-search-main">
<div class="goods-search-box">
<ul>
<% if @goods.present? %>
<% @goods.first(10).each do |item| %>
<div class="goods-list">
<div class="goods-img">
<li><img src="<%= item['mediumImageUrls'][0] %>"></li>
</div>
<div class="goods-list-right">
<div class="goods-name">
<li><a href="<%= item['itemUrl'] %>" target="_blank"><%= item['itemName'] %></a></li>
</div>
<div class="goods-price">
<li><%= item['itemPrice'] %>円</li>
</div>
</div>
</div>
<% end %>
<% end %>
</ul>
</div>
</div>
</div>
そうすると、
表示されました!!
バンザーイ。
これでランキングを表示したり、レシピを見たりなどが可能になります!!
パラメーターも変えると、色々なものを出力することができます。
CSSなど装飾はお好みで・・・
さいごに
検索機能を実装中にeachメソッドのところに「if文」を入れていなく、「NoMethodError」になって少し時間がかかりました、が・・!!
パラメーターもサイトを見ながらテストフォームを活用し、内容を確認しながら実装してみて、色々な情報を表示することができました!!
もっといいやり方があるのかはわかりませんが、とても便利です。
また次回もっと細かくさわっていきたいを思います。
お疲れ様でした!!!!!
参考
細かくはこちらに書いています。
Github:rakuten-ws/rws-ruby-sdk
こちらも大変参考になりました。ありがとうございます!