概要
備忘録として楽天APIの用いて検索する機能の実装方法をまとめます
参照
以下の記事を参考にしました。
ほとんど同じですが、上手く行かなかったところを自分なりに修正しました。
https://qiita.com/nabenomoto/items/6453c4577647cb8995d3
完成図
API取得方法
こちらの記事で取得方法を詳しく解説してくださっているので、参考にしてみてください。
https://freesworder.net/rakuten-api-rails/
アプリの作成
ターミナル
$cd desktop
$rails new rakuten_sample
$cd rakuten_sample
Gemをインストール
Gemfile
gem 'rakuten_web_service'
忘れずにこれも!
ターミナル
bundle install
アプリケーションIDを設定
取得したアプリケーションIDを設定します。
config/initializersフォルダの中にファイルを作成。
rakuten.rb
RakutenWebService.configure do |c|
# (必須) アプリケーションID
c.application_id = 'RWS_APPLICATION_ID'
# (任意) 楽天アフィリエイトID
c.affiliate_id = 'RWS_AFFILIATION_ID'
end
コントローラーの作成
ターミナル
$ rails g controller books
コントローラーの編集
app/controller/books_controller
class BooksController < ApplicationController
def search
if params[:keyword]
@books = RakutenWebService::Books::Book.search(title: params[:keyword])
end
end
end
ビューの作成
まずはapp/view/booksに
・search.html.erb
・_book.html.erb
を作成!
ビューの編集
view/books/search.html.erb
<div class = "search-box" >
<%= form_with url: books_search_path, method: :get, local: true do |f| %>
<div class = "form-group" >
<%= f.text_field :keyword, class: "form-control" %>
<%= f.submit '本の題名を検索', class: "form-control btn btn-success" %>
</div>
<% end %>
<% if @books.present? %>
<%= render 'books/book' %>
<% end %>
</div>
view/books/_book.html.erb
<% @books.each do |book| %>
<%= link_to (image_tag(book.medium_image_url)), book.item_url %><br>
<%= book.title %><br>
<%= book.author %><br>
<%= book.item_caption %><br>
<% end %>
ルーティングの設定
config/routes
Rails.application.routes.draw do
get 'books/search' => "books#search"
root"books#search"
end
完成!
お疲れ様でした!