前提・実現したいこと
Ruby on railsで簡単なアプリケーションを作成しています。
テキスト登録フォームと登録データ一覧(index)を同じ画面に表示するようにしています。
※初心者ですので、以下分かりにくい箇所があるかもしれません。必要情報があればご教示いただけますと幸いです。
発生している問題・エラーメッセージ
フォーム入力→登録ボタンをクリックしても画面表示が何も変わりません。
(本来であれば、登録データ一覧に登録内容の追加と、"Book was successfully created."というメッセージが表示されます)
logを確認したところ、フォーム入力したデータは変数に格納されているようですが
その後うまく保存されていないようです。
↓log
該当のソースコード
■コントローラー
class BooksController < ApplicationController def show @book = Book.find(params[:id]) end def index @books = Book.all @book = Book.new end def new @book = Book.new end def create @books = Book.all @book = Book.new(book_params) if @book.save flash[:success] = "Book was successfully created." redirect_to book_path(@book.id) else render "index" end end def edit @book=Book.find(params[:id]) end def update @book=Book.find(params[:id]) if @book.update(book_params) flash[:success] = "Book was successfully updated." redirect_to book_path(@book) else render "edit" end end def destroy book=Book.find(params[:id]) if book.destroy flash[:success] = "Book was successfully destroyed." redirect_to books_path end end private def book_params params.require(:book).permit(:title,:body) end end
■ルーティング
Rails.application.routes.draw do get "/" => "homes#top" resources :books # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
■ビュー
<h1>Books</h1> <body> <table> <thead> <tr> <th>title</th> <th>Body</th> <th colspan="3"></th> </tr> </thead> <tbody> <tr> <% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.body %></td> <td><%= link_to 'Show', book_path(books.id) %></td> <td><%= link_to 'Edit', edit_book_path(books.id) %></td> <a><td><%= link_to 'Destroy', book_path(books.id), method: :delete, data: { confirm: 'Are you sure?' } %></td></a> </tr> <% end %> </tr> </tbody> </table> <br> <h2>New book</h2> <form class="new_book"> <% if @book.errors.any? %> <div class="alert-danger"> <%= @book.errors.count %>errors prohibited this book from being saved: <ul><% @book.errors.full_messages.each do |message| %> <li class="alert-danger-list"><%= message %></li> <% end %> </ul> </div> <% end %> <%= form_with model:@book, local:true do |f| %> <h4>Title</h4> <%= f.text_field :title %> <h4>Body</h4> <%= f.text_area :body %> <div class="actions"> <%= f.submit 'Create Book' %> </div> <% end %> </form> </body>
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー