LoginSignup
10
2

More than 1 year has passed since last update.

【Rails】楽天APIの導入

Last updated at Posted at 2022-12-21

概要

備忘録として楽天APIの用いて検索する機能の実装方法をまとめます

参照

以下の記事を参考にしました。
ほとんど同じですが、上手く行かなかったところを自分なりに修正しました。
https://qiita.com/nabenomoto/items/6453c4577647cb8995d3

完成図

rakuten.gif

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

完成!
お疲れ様でした!

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2