質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

3208閲覧

編集、更新したかったのですがエラー Routing Error No route matches [PATCH] "/books.1"が解決できない

-maeji-

総合スコア39

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/01/06 11:54

RailsでCRUD処理を実行できる簡単なアプリケーションを作って練習中です。
書籍登録のアプリです。
書籍の一覧、詳細、削除は実装できましたが、編集後の更新ができません。
自分で調べてみたのですが解決法が絞れないのでみていただけないでしょうか。
以下、エディタの内容です。

###roures.rb
routes.rb
Rails.application.routes.draw do
get 'welcome/index'

For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

resources :books
root 'welcome#index'
end

###books_controller.rb ```class BooksController < ApplicationController#to do index アクションを作る def index @books = Book.all end def show @book = Book.find(params[:id]) end def new @book = Book.new end def edit @book = Book.find(params[:id]) end def create @book = Book.new(book_params) if @book.save redirect_to @book else render :new end end def update @book = Book.find(params[:id]) if @book.update(book_params) redirect_to @book else render :edit end end def destroy @book = Book.find(params[:id]) @book.destroy! redirect_to books_path end private def book_params params.require(:book).permit(:title, :text) end end

###edit.html.erb

<h1>書籍を編集する</h1> <%= form_for :book, url: books_path(@book),method: :patch do |f| %> <p> <%= f.label :title %> <%= f.text_field :title %> </p> <p> <%= f.label :text %> <%= f.text_area :text %> </p> <p> <%= f.submit %> </p> <% end %> <%= link_to '戻る',books_path %>

###book.rb

class Book < ApplicationRecord validates :title, presence: true,length: {minimum: 5} end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ビューを下記のように編集するといかがでしょうか?

<%= form_for(@book) do |f| %>

RailsにはPOST、PATCHの判断をActiveRecordのnew_record?メソッドが勝手にやってくれるという便利な機能があります。
すでに登録されている本であればPATCHを、新規の本を登録する時はPOSTという風に使い分けてくれます。

ちなみに下記の書き方でもイケる気がします。(試してはいません。申し訳ないです^^;)

<%= form_for @book, url: edit_book_path do |f| %>

-参考URL-
https://qiita.com/shiro615/items/242600033b769d23798f

http://xengineer.hatenablog.com/entry/2014/10/20/rails%E3%81%AEform_for%E3%81%AFPOST/PATCH%E3%82%92%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%82%8B

投稿2019/01/06 13:19

tailer

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

-maeji-

2019/01/07 09:56

教えていただいた方法で解決いたしました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問