前提・実現したいこと
Rails初心者のものです。
同じページに一覧情報と投稿ページを置いており
createで新規投稿した後にedit → updateアクションを実行したら
変更内容が上書きされるようにしたいです。
発生している問題・エラーメッセージ
Railsで簡単なwebアプリケーションを作っており、
editからupdateアクションで上書きをした後に
変更した内容の情報が変更されず困っています。
一覧画面と投稿画面を同じページに置いているため
うまくいかないのかもしれませんが
原因がわからず泥沼にはまってしまっております。
エラーメッセージ
エラーメッセージはでませんが、
変更後にupdateをしても一番初めの投稿から
何も変化が起きず、エラーも起きません。
ルーティング
get '/' => 'homes#top'
get 'books' => 'books#index'
get 'books/:id/edit' => 'books#edit', as: 'booksedit'
get 'books/:id' => 'books#show', as: 'booksshow'
post 'books' => 'books#create'
patch 'books/:id' => 'books#update', as: 'booksupdate'
delete 'books/:id' => 'books#destroy', as: 'booksdestroy'
end
コントローラー
class BooksController < ApplicationController
def top
@book = Booker.new
end
def new
@book = Booker.new
end
def index
@books = Booker.all
end
def create
book = Booker.new(book_params)
book.save
redirect_to booksshow_path(book.id)
end
def show
@book = Booker.find(params[:id])
end
def destroy
book = Booker.find(params[:id])
book.destroy
redirect_to request.referer
end
def edit
@book = Booker.find(params[:id])
end
def update
book = Booker.find(params[:id])
book.update(book_params)
redirect_to booksshow_path(book.id)
end
private
def book_params
params.permit(:Title, :Body)
end
end
###index html (viewファイル)
<body class="indexbody"> <h1 class="indexh1">Books</h1> <table class="table"> <thead class="thead"> <tr> <th>Title</th> <th>Body</th> <th colspan="3"></th> </tr> </thead></table> <h2>New book</h2> <%= form_with model:@book, local:true do |f| %> <h4>Title</h4> <%= f.text_field :Title %> <h4>Body</h4> <%= f.text_area :Body %> <%= f.submit 'Create Book' %><tbody> <% @books.each do |f| %> <tr> <td class="td1"><%= f.Title %></td> <td class="td1"><%= f.Body %></td> <td class="td1"><%= link_to "Show", "/books/#{f.id}" %></td> <td class="td1"><%= link_to "Edit", "books/#{f.id}/edit" %></td> <td class="td1"><%= link_to "Destroy", "books/#{f.id}", method: :delete, "data-confirm" => "Are you sure?" %></td> </tr> <% end %> </tbody>
<% end %>
</body>試したこと
ストロングパラメーターにparams.require(:user).permit(:Title, :Body)を
記載すると変更した内容が上書きされるのですが(requireの箇所)
今度はcreateアクションができなくなったしまう現象が起きます。
requireの箇所を削除すると今度は投稿ができなくなり
編集ができるようになります。
https://qiita.com/kazuki13070311/items/cdd4917af204e00de001
このURLも参考にしたのですがうまくいきませんでした。
あなたの回答
tips
プレビュー