今回は楽天apiを使用して、本を検索し、その本の商品情報を表示させていきます。
1.アプリケーションIDの取得
楽天apiを使用するためには下記のサイトからアプリケーションIDを発行する必要があるので、発行します。
2.gemのインストール
gem 'rakuten_web_service'
gem 'dotenv-rails'
3.envファイルの編集
.envファイルに先ほど入手したアプリケーションidを記述します。
RAKUTEN_API_KEY = "***************"
記述ができたらrails cで確認をします。
rails c
ENV['RAKUTEN_API_KEY']
4.アプリケーションIDの設定
config/initializersの下にrakuten.rbファイルを作成し、下記を記述します。
RakutenWebService.configure do |c|
c.application_id = ENV['RAKUTEN_API_KEY']
end
5.viewの作成
①routesの追加
get 'books/search'
②ヘッダーにリンクの追加
<li><%= link_to "本を検索",books_search_path,class: 'nav-link text-light' %></li>
③コントローラの編集
def search
if params[:keyword]
@books = RakutenWebService::Books::Book.search(title: params[:keyword])
end
end
@booksには今回は本に絞った検索なので、RakutenWebService::Books::Bookを使用しています。
④検索フォームの作成
<div class="search-box">
<%= form_with url: books_search_path, method: :get do |f| %>
<div class="form-group">
<%= f.text_field :keyword, class: "form-control" %>
<%= f.submit "本の題名を検索", class: "form-control" %>
</div>
<% end %>
<% if @books.present? %>
<%= render "books/book", books: @books %>
<% else %>
検索結果は見つかりませんでした
<% end %>
</div>
⑤検索結果の部分テンプレートの作成
<table class='table table-hover table-inverse'>
<thead>
<tr>
<th>タイトル</th>
<th>著者</th>
<th>概要</th>
<th></th>
<th colspan="4"></th>
</tr>
</thead>
<tbody>
<% books.each do |book| %>
<tr>
<td><%= book.title %></td>
<td><%= book.author %></td>
<td><%= book.item_caption %></td>
<td><%= link_to (image_tag(book.medium_image_url)), book.item_url %></td>
</tr>
<% end %>
</tbody>
</table>
ここまでで完成なので、動きを見てみます。
おわり
今回は楽天apiを使って本を検索するということをやってみました。意外と楽天apiの導入が簡単で直感的にできたのでよかったです。amazonのapiとかだと審査があるそうなので、そちらは少しめんどくさそうですね。それでは今回はこの辺で!また別の記事でお会いしましょう!