0
0

More than 1 year has passed since last update.

楽天BookAPIで表示した検索結果をデータベースに保存する

Posted at
  1. 序論
    今回は楽天APIを用いて、検索結果を表示させる方法と、検索結果の中から一つ選んでデータベースに保存する方法をアウトプットします。

2.Gemfile
今回ユーザーモデルも用いるのでdeviseと楽天API用のrakuten_web_serviceをGemfileに追加してbundle installしてください。
image.png

3.モデル
ユーザーモデルに関してはdeviseを使って実装してください。今回楽天booksAPIと連動させるbook.modelについてですが、以下のように設定し、rails db:migrateしてください。

image.png

次に、ユーザーとbooksは多対多の関係になりうるので、中間テーブルとしてbookcasesを設定する。

image.png

4.楽天APiの設定
序論においてgemに楽天ウェブサービスを追加した。しかし、これだけではAPIを利用することはできないので追加の設定を行う。
まずは楽天APIのAPIキーを習得してください。以下のリンクを参考にすれば難しくないはずです。

そして、config/initializersにrakuten.rbファイルを作成します。そのファイルの中身は以下のようにしてください。

image.png

ここの書き方はバージョンによって変わるらしく、これが現在の書き方です。

5.検索結果の表示
まずはbooksコントローラを作成します。このコントローラのnewアクションで本を探し、saveボタンを押すとその本を登録できるような形とします。

まずは検索についてです。検索フォームに入力された文字列を@titleに格納し、searchメソッドにて@titleをもとに検索がかけられます。
検索結果はそれぞれnewメソッドで作成され、<<にて空の配列の@booksに収納されます。それがviewページでeach文で表示されるという仕組みになっています。

controller
image.png

books/new.html.erb
image.png

6.データをデータベースに保存する
これで入力されたタイトルから書籍を検索できるようになrました。次は、これをデータベースに保存する方法です。検索結果で表示されていたフォームからhidden_fieldでisbnを習得して、そのisbnで書籍を再度検索して保存するというやり方です。

books.controller
image.png

books/new.html.erb
image.png

books/show.html.erb
image.png

books/index.html.erb
image.png

7.結論
これで楽天APIを用いて情報を受け取り、データベースに保存することができるようになりました。後の応用としては、userとbookモデルに中間テーブルとしてreviewモデルを作成し、レビューを残すなどといったことができます。こちらはコメント機能を応用すればできると思いますので、いずれ記事にしたいと考えています。

0
0
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
0
0