Ruby on railsで簡単なブログ投稿機能を持ったアプリを作成しております。
すでに投稿されたブログの編集機能を実装したいのですが、ブログ本文を編集してボタンを押してもデータベースの値が変化せず、またその原因がわからず困っております。
binding.pryを入れて調べてみましたが、コンソール上ではデータが更新されるのに、データベースは更新されません。
こちら原因についてお答え頂けますと幸いです。
app/controller/blogs_controller.rb
ruby
1class BlogsController < ApplicationController 2 3 before_action :move_to_index, except: :index 4 5 def index 6 @blogs = Blog.order("created_at desc").page(params[:page]).per(5) 7 end 8 9 def new 10 end 11 12 def create 13 Blog.create(blog_params) 14 end 15 16 def destroy 17 blog = Blog.find(params[:id]) 18 blog.destroy 19 end 20 21 def edit 22 @blog = Blog.find(params[:id]) 23 end 24 25 def update 26 blog = Blog.find(params[:id]) 27 blog.update(blog_params) 28 binding.pry 29 end 30 31 private 32 def blog_params 33 params.permit(:body) 34 end 35 36 def move_to_index 37 redirect_to action: :index unless user_signed_in? 38 end 39end
app/vies/edit.html.erb
html
1<div class="row"> 2 <%= form_tag("/blogs/#{@blog.id}", method: :patch, class: "col s12") do %> 3 <div class="row"> 4 <div class="input-field col s12"> 5 <textarea name="body" type="text" class="materialize-textarea" placeholder="本文"><%= @blog.body %></textarea> 6 <input type="submit" value="送信" class="waves-effect waves-light btn"> 7 </div> 8 </div> 9 <% end %> 10</div>
config/routes.rb
ruby
1Rails.application.routes.draw do 2 devise_for :users 3 4 root 'blogs#index' 5 get 'blogs' => 'blogs#index' 6 get 'blogs/new' => 'blogs#new' 7 post 'blogs' => 'blogs#create' 8 delete 'blogs/:id' => 'blogs#destroy' 9 patch 'blogs/:id' => 'blogs#update' 10 get 'blogs/:id/edit' => 'blogs#edit' 11end 12
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/31 02:33
2018/12/31 02:43
2018/12/31 03:03