getting-started/bookshelf/app/controllers/books_controller.rb (44 lines of code) (raw):
# Copyright 2019 Google LLC.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
class BooksController < ApplicationController
PER_PAGE = 10
def index
@books = Book.query limit: PER_PAGE, last_title: params[:last_title]
@last_title = @books.last&.title
end
def new
@book = Book.new
end
def edit
@book = Book.find params[:id]
end
def show
@book = Book.find params[:id]
end
def destroy
@book = Book.find params[:id]
@book.destroy
redirect_to books_path
end
def update
@book = Book.find params[:id]
if @book.update book_params
flash[:success] = "Updated Book"
redirect_to book_path(@book)
else
render :edit
end
end
def create
@book = Book.new book_params
if @book.create
flash[:success] = "Added Book"
redirect_to book_path(@book)
else
render :new
end
end
private
def book_params
params.require(:book).permit :title, :author, :published_on, :description,
:cover_image
end
end