Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ group :development, :test do
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
gem "debase"
gem "debug", platforms: %i[mri mingw x64_mingw]
gem "ruby-debug-ide"
# gem "ruby-debug-ide"
end

group :development do
Expand Down
3 changes: 0 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,6 @@ GEM
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.24.1)
parser (>= 3.1.1.0)
ruby-debug-ide (0.7.3)
rake (>= 0.8.1)
ruby-progressbar (1.11.0)
rubyzip (2.3.2)
sassc (2.4.0)
Expand Down Expand Up @@ -336,7 +334,6 @@ DEPENDENCIES
rails (~> 7.0.4, >= 7.0.4.2)
rbs (~> 2.8.4)
rbs_rails
ruby-debug-ide
sassc-rails
selenium-webdriver
solargraph
Expand Down
17 changes: 16 additions & 1 deletion app/controllers/admin/books_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ def index

def new
@book = Book.new
@result_book = params[:result_book]
end

def create
Expand All @@ -20,9 +21,23 @@ def create
end
end

def search
require 'net/http'
require 'uri'

isbn10 = params[:isbn]
uri = URI.parse('https://www.googleapis.com/books/v1/volumes')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
response = http.get("#{uri}?q=isbn:#{isbn10}")
hash = JSON.parse(response.body)
@result_book = hash["items"][0]["volumeInfo"]
redirect_to action: 'new', result_book: @result_book
end

private

def book_params
params.require(:book).permit(:title, :image)
params.require(:book).permit(:title, :image, :isbn)
end
end
9 changes: 9 additions & 0 deletions app/controllers/admin/requests_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class Admin::RequestsController < ApplicationController
def index
@request = Request.all
end

def update
@request = Request.find(params[:isbn])
end
end
2 changes: 2 additions & 0 deletions app/helpers/admin/request_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
module Admin::RequestHelper
end
2 changes: 2 additions & 0 deletions app/models/request.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class Request < ApplicationRecord
end
19 changes: 19 additions & 0 deletions app/views/admin/books/_search_result.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<h3 class="text-xl py-10">検索結果</h3>
<%= form_with(model: @book, url: admin_books_path) do |f| %>
<div class="flex">
<div>
<div>
<p>
<%= f.label :タイトル %>
</p>
<p>
<%= f.text_field :title, value: @result_book["title"], readonly: true, class: "border shadow rounded w-80 h-16 break-words" %>
</p>
<div>
<%= f.hidden_field :isbn, value: @result_book["industryIdentifiers"][0]["identifier"], class: "border" %>
</div>
</div>
<%= f.submit "本を登録する", class: "w-full mt-6 text-white bg-blue-700 font-medium rounded-lg text-sm px-5 py-2.5" %>
</div>
</div>
<% end %>
31 changes: 13 additions & 18 deletions app/views/admin/books/new.html.erb
Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
<h1 class="text-3xl">本管理 > 本登録</h1>
<%= form_with(model: @book, url: admin_books_path) do |f| %>
<div class="flex">
<div>
<%= f.file_field :image %>
</div>
<div>
<div>
<p>
<%= f.label :タイトル %>
</p>
<p>
<%= f.text_field :title, class: "border" %>
</p>
</div>
<%= f.submit "本を登録する", class: "w-full mt-6 text-white bg-blue-700 font-medium rounded-lg text-sm px-5 py-2.5" %>
</div>
<h1 class="text-xl text-left">本管理 > 本登録</h1>
<%# APIのcontroller作成時にURL修正する %>
<%= form_tag({:action=>"search", :controller=>"admin/books"},{ method: :post }) do %>

<div class="lex flex-col py-10 space-y-4 space-x-4">
<label for="isbn">ISBN-10</label>
<input class="w-80 bg-white shadow rounded" type="text" name="isbn" id="isbn"/>
<input type="submit" value="検索" class="w-70 text-white bg-blue-700 hover:bg-sky-500 font-medium rounded-lg border-solid text-m px-5 py-2.5" />
</div>
<% end %>
<% end %>

<% if @result_book %>
<%= render partial: 'search_result', locals: { result_book: @result_book } %>
<% end %>
39 changes: 39 additions & 0 deletions app/views/admin/requests/index.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<div class="relative overflow-x-auto">
<%= form_with(model: @request, url: admin_requests_path) do |f| %>
<table class="w-full text-sm text-left text-black">
<thead class="text-xs text-black border-b uppercase bg-white">
<tr>
<th scope="col" class="px-6 py-3">
ISBN
</th>
<th scope="col" class="px-6 py-3">
タイトル
</th>
<th scope="col" class="px-6 py-3">
著者
</th>
<%# <th scope="col" class="px-6 py-3">
アクション
</th> %>
</tr>
</thead>
<tbody>
<% @request.each do |request| %>
<tr class="bg-white border-b">
<th scope="row" class="px-6 py-4 font-medium text-gray-900 whitespace-nowrap">
<%= request.isbn %>
</th>
<td class="px-6 py-4">
<%= request.title %>
</td>
<td class="px-6 py-4">
<%= request.author %>
</td>
<td class="px-6 py-4">
<%= f.submit "購入した", class: "w-full mt-6 text-white font-medium rounded-lg text-sm px-5 py-2.5 #{request.status ? 'bg-gray-400' : 'bg-blue-700' }", disabled: request.status %> </td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
</div>
3 changes: 3 additions & 0 deletions app/views/layouts/application.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
<li>
<%= link_to "ユーザー一覧", admin_users_path, class: "flex justify-center items-center p-2 text-base font-normal text-black bg-gray-300 hover:bg-gray-600" %>
</li>
<li>
<%= link_to "リクエスト一覧", admin_requests_path, class: "flex justify-center items-center p-2 text-base font-normal text-black bg-gray-300 hover:bg-gray-600" %>
</li>
<% end %>
<li>
<%= link_to "本の一覧", books_path, class: "flex justify-center items-center p-2 text-base font-normal text-black bg-gray-300 hover:bg-gray-600" %>
Expand Down
7 changes: 7 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,16 @@
root "top#index"
namespace :admin do
resources :books, only: [:index, :new, :create]
resources :books do
collection do
post 'search'
end
end
resources :users, only: [:index]
resources :requests, only: [:index]
end


resources :books
resources :reservations, only: [:index, :show, :create, :destroy]
resources :lendings, only: [:index, :show, :create, :update]
Expand Down
5 changes: 5 additions & 0 deletions db/migrate/20231118075519_add_isbn_to_books.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddIsbnToBooks < ActiveRecord::Migration[7.0]
def change
add_column :books, :isbn, :string
end
end
11 changes: 11 additions & 0 deletions db/migrate/20231118080400_create_requests.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class CreateRequests < ActiveRecord::Migration[7.0]
def change
create_table :requests do |t|
t.string :title
t.string :author
t.string :isbn

t.timestamps
end
end
end
5 changes: 5 additions & 0 deletions db/migrate/20231118110246_add_status_to_requests.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddStatusToRequests < ActiveRecord::Migration[7.0]
def change
add_column :requests, :status, :boolean, default: false
end
end
12 changes: 11 additions & 1 deletion db/schema.rb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

71 changes: 65 additions & 6 deletions db/seeds.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,30 @@
ActiveRecord::Base.transaction do
10.times do
Book.create!(title: Faker::Book.title)
end

Book.create!(
title:"プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで",
isbn:"4774193976"
)

Book.create!(
title:"現場で使える Ruby on Rails 5速習実践ガイド",
isbn:"483996222"
)

Book.create!(
title:"ゼロからわかる Ruby 超入門",
isbn:"4297101238"
)

Book.create!(
title:"改訂2版 パーフェクトRuby",
isbn:"4774189774"
)

Book.create!(
title:"達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践",
isbn:"4297128462"
)


User.create!(
name: "admin",
Expand Down Expand Up @@ -31,18 +54,54 @@
)
end

5.times do |n|
2.times do |n|
if n.even?
user.lendings.create!(
book_id: n + 4,
book_id: n + 1,
return_at: Date.today.days_since(n)
)
else
user.lendings.create!(
book_id: n + 4,
book_id: n + 1,
return_at: Date.today.days_ago(n),
return_status: true
)
end
end

Request.create!(
title:"プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで",
author:"伊藤 淳一 ",
isbn:"4774193976",
status: false
)

Request.create!(
title:"現場で使える Ruby on Rails 5速習実践ガイド",
author:"大場寧子",
isbn:"483996222",
status: false
)

Request.create!(
title:"ゼロからわかる Ruby 超入門",
author:"五十嵐邦明",
isbn:"4297101238",
status: false
)

Request.create!(
title:"怪物に出会った日 井上尚弥と闘うということ",
author:"森合 正範",
isbn:"4065337488",
status: true
)

Request.create!(
title:"大ピンチずかん",
author:"鈴木 のりたけ",
isbn:"4097251384",
status: true
)

end
7 changes: 7 additions & 0 deletions test/controllers/admin/request_controller_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require "test_helper"

class Admin::RequestControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end
11 changes: 11 additions & 0 deletions test/fixtures/requests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html

one:
title: MyString
author: MyString
isbn: MyString

two:
title: MyString
author: MyString
isbn: MyString
7 changes: 7 additions & 0 deletions test/models/request_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require "test_helper"

class RequestTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end