前提・実現したいこと
記事投稿アプリを作っており、編集機能を実装しようと思っています。
発生している問題・エラーメッセージ
ルーティングエラーが発生してしまっています。
routes.rbには [:edti]と[:update]を設定したんですが、
データが[POST]として送信されてしまっている?ようで、ルーティングがマッチしていないようです。
No route matches [POST] "/posts/2/update"
posts_controller.rb
class PostsController < ApplicationController protect_from_forgery def index @posts = Post.all.page(params[:page]).per(6) end def new @post = Post.new end def create Post.create(post_params) redirect_to root_path end def edit @post = Post.find(params[:id]) end def update post = Post.find(params[:id]) post.update(post_params) redirect_to post_path(post.id) end def show @post = Post.find(params[:id]) end def destroy end private def post_params params.require(:post).permit(:title, :image, :content, :partner) end end
###edit.html.erb
<body> <%= form_tag("/posts/#{@post.id}/update") do %> <form> <div class="form-group"> <label for="exampleInputEmail1">パートナー名を編集</label> <textarea name="partner" class="form-control"><%= @post.partner %></textarea> </div> <form> <div class="form-group"> <label for="exampleInputEmail1">タイトルを編集</label> <textarea name="title" class="form-control"><%= @post.title %></textarea> </div><!--form-group--> <div class="form-group"> <label for="exampleInputEmail1">内容を編集</label> <textarea name="content" class="form-control"><%= @post.content %></textarea> </div> <button type="submit" class="btn btn-primary">保存</button> <% end %> </body>
###routes.rb
Rails.application.routes.draw do root to: 'posts#index' resources :posts, only: [:index, :new, :create, :show, :edit, :update] end
試したこと
resourcesを使わず、個別でルーティングを設定してもエラーが消えませんでした。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/19 05:05