- 序論
今回は楽天APIを用いて、検索結果を表示させる方法と、検索結果の中から一つ選んでデータベースに保存する方法をアウトプットします。
2.Gemfile
今回ユーザーモデルも用いるのでdeviseと楽天API用のrakuten_web_serviceをGemfileに追加してbundle installしてください。
3.モデル
ユーザーモデルに関してはdeviseを使って実装してください。今回楽天booksAPIと連動させるbook.modelについてですが、以下のように設定し、rails db:migrateしてください。
次に、ユーザーとbooksは多対多の関係になりうるので、中間テーブルとしてbookcasesを設定する。
4.楽天APiの設定
序論においてgemに楽天ウェブサービスを追加した。しかし、これだけではAPIを利用することはできないので追加の設定を行う。
まずは楽天APIのAPIキーを習得してください。以下のリンクを参考にすれば難しくないはずです。
そして、config/initializersにrakuten.rbファイルを作成します。そのファイルの中身は以下のようにしてください。
ここの書き方はバージョンによって変わるらしく、これが現在の書き方です。
5.検索結果の表示
まずはbooksコントローラを作成します。このコントローラのnewアクションで本を探し、saveボタンを押すとその本を登録できるような形とします。
まずは検索についてです。検索フォームに入力された文字列を@titleに格納し、searchメソッドにて@titleをもとに検索がかけられます。
検索結果はそれぞれnewメソッドで作成され、<<にて空の配列の@booksに収納されます。それがviewページでeach文で表示されるという仕組みになっています。
6.データをデータベースに保存する
これで入力されたタイトルから書籍を検索できるようになrました。次は、これをデータベースに保存する方法です。検索結果で表示されていたフォームからhidden_fieldでisbnを習得して、そのisbnで書籍を再度検索して保存するというやり方です。
7.結論
これで楽天APIを用いて情報を受け取り、データベースに保存することができるようになりました。後の応用としては、userとbookモデルに中間テーブルとしてreviewモデルを作成し、レビューを残すなどといったことができます。こちらはコメント機能を応用すればできると思いますので、いずれ記事にしたいと考えています。