前提・実現したいこと
GoogleBooksAPIから画像を取得したいです。
本のタイトルと著者名は検索から取得することができるのですが、画像の取得の方法がわかりません。
該当のソースコード
books_controller.rb
rails
1class BooksController < ApplicationController 2 before_action :authenticate_user!, only: [:new, :create] 3 4 5 def new 6 @book = Book.new 7 8 if params[:keyword].present? 9 require 'net/http' 10 url = 'https://www.googleapis.com/books/v1/volumes?q=' 11 request = url + params[:keyword] 12 enc_str = URI.encode(request) 13 uri = URI.parse(enc_str) 14 json = Net::HTTP.get(uri) 15 @bookjson = JSON.parse(json) 16 17 count = 5 #検索結果に表示する数 18 @books = Array.new(count).map{Array.new(4)} 19 count.times do |x| 20 @books[x][0] = @bookjson.dig("items", x, "volumeInfo", "title") 21 @books[x][1] = @bookjson.dig("items", x, "volumeInfo", "imageLinks", "thumbnail") 22 @books[x][2] = @bookjson.dig("items", x, "volumeInfo", "authors") 23 @books[x][2] = @books[x][2].join(',') if @books[x][2] #複数著者をカンマで区切る 24 @books[x][3] = @bookjson.dig("items", x, "volumeInfo", "industryIdentifiers", 0, "identifier") 25 end 26 end 27 @title = params[:title] if params[:title].present? 28 @author = params[:author] if params[:author].present? 29 @img = params[:image] if params[:image].present? 30 end 31 32 33 34 private 35 def book_params 36 params.require(:book).permit(:title, :author, :learn, :about, :category, :overrall, :image) 37 end 38 39end 40
new.html.erb
rails
1<%= stylesheet_link_tag 'new', :media => "all" %> 2<br> 3<h2>入力フォーム</h2> 4<br> 5<div class="post-container"> 6 <h1>書籍の新規登録</h1> 7 <%= form_tag('booksearch', method: :get) do %> 8 <div class="input-group"> 9 <%= search_field_tag "keyword", params[:keyword], class: "form-control", placeholder: "キーワード検索" %> 10 <span class="input-group-btn"> 11 <%= submit_tag "検索", class: "btn btn-primary" %> 12 </span> 13 </div> 14 <% end %> 15 <h2>検索結果</h2> 16 <% if @books.present? %> 17 <% @books.each do |book| %> 18 <img src="<%= book[1] %>" width="40" vspace="2"> 19 <%= link_to book[0], controller: "books", action: "new", title: book[0], author: book[2], img: book[1] %> 20 <%= book[2] %> | 21 <% end %> 22 <% end %> 23 <br> 24 <br> 25 <%= form_with scope: :book, url: books_path, local: true do |form| %> 26 <%= form.label :本のタイトル %> 27 <%= form.text_field :title, class: 'form-control', value: "#{@title}" %> 28 <br> 29 <br> 30 <%= form.label :著者 %> 31 <%= form.text_field :author, class: 'form-control', value: "#{@author}" %> 32 <%= form.hidden_field :img, class: 'form-control', value: "#{@img}" %> 33 34 <% end %> 35 <%= link_to "本の一覧に戻る", books_path %> 36
試したこと
このサイト(GoogleBooksAPIとRailsでお手軽に書籍登録)を参考にGoogleBooksAPIを実装しました。公式ドキュメントに書かれていたimaagelinksが使えるのではないかと試行錯誤中です。
補足情報(FW/ツールのバージョンなど)
ruby 2.7.2p137
Rails 6.1.3.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。