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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

解決済

3回答

1506閲覧

No route matches [POST] "/posts/new"を解決したい

baseball1551

総合スコア16

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

1グッド

1クリップ

投稿2019/06/14 14:35

編集2019/06/15 05:27

前提・実現したいこと No route matches [POST] "/posts/new"を解決したい

RubyonRails初心者です。投稿アプリの作成中、記事の登録アクションを実装しようとしたら下記のエラーがでました。
googleで調べてみたのですが、調べ方が下手なのかなかなか解決できない状況です。。

発生している問題・エラーメッセージ

投稿のボタンを押すと下記エラーとなります。
エラーメッセージ
Routing Error
No route matches [POST] "/posts/new"

該当のソースコード

#posts_controller.rb class PostsController < ApplicationController def index @post = Post.new end def show end def new end def create post = Post.new(post_params) post.save! redirect_to posts_url, notice: "「#{post.name}を投稿しました。」" end def edit end private def post_params params.require(:post).permit(:name, :article) end end
#routes.rb Rails.application.routes.draw do root to: 'posts#index' resources :posts end
#index.html.slim h1 投稿一覧 = link_to '新規投稿', new_post_path, class: "btn btn-primary"
#new.html.slim h1 新規投稿 .nav.justify-content-end = link_to '一覧', posts/path, class: 'nav-link' = form_with model: @post, local: true do |f| .form-group = f.label :name = f.text_field :name, class: 'form-control', id: 'post_name' .form-group = f.label :article = f.text_area :article, rows: 5, class: 'form-control', id: 'post_article' = f.submit nil, class: 'btn btn-primary'

試したこと

なにが間違ってるのか調べてもわからず仕舞いです、、

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

winterboum👍を押しています

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

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

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

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

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

hatsu

2019/06/14 14:44 編集

「記事の登録アクション」は = link_to '新規投稿', new_post_path, class: "btn btn-primary" の新規投稿ボタンのことでしょうか? もしも違ったら、「記事の登録ボタン」のコードも書いていただけると嬉しいです...!><
baseball1551

2019/06/14 15:48

ご回答ありがとうございます。説明ややこしい書き方をしてしまって申し訳ありません。「記事の投稿アクション」は新規投稿ボタンの事です。よろしくお願いします。
guest

回答3

0

ベストアンサー

私はまだRails4のレベルでRails5を使っているので、form_withは未経験なのですが、

= form_with model: @post, local: true do |f|

とあるのに

def new end

で、@postが定義されていません。

def new @post = Post.new end

もしくは

= form_with model: Post.new, local: true do |f| def new

としてみて下さい。
これが質問の現象の原因かどうかはわかりませんが、動くようにするには、すくなくともこの修正は必須です。

投稿2019/06/15 18:18

winterboum

総合スコア23329

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

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

0

No route matches [POST] "/posts/new"

が奇妙なエラーです。
これは
(1)新たな投稿を記入するための画面を表示するボタン
= link_to '新規投稿', new_post_path, class: "btn btn-primary"
によるエラーですか?

それとも
(2)その画面で入力後 投稿 するボタン(ソースはここに未開示)によるものですか?

(1)でしたら [POST] ではなく [GET] になると思います。
(2)でしたら "/posts/new" でなく "/posts/" かな "/posts/create"かなになると思います。 create_post_path ですね。

(1)なのか(2)なのか、
(1)の場合は routes が怪しいので config/routes.rb を
(2)の場合は その入力画面の view を
開示して下さい

投稿2019/06/14 22:34

winterboum

総合スコア23329

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

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

baseball1551

2019/06/15 05:31

ご回答ありがとうございます。 (2)でしたのでview画面を追記致しました。現状でcreateに移行されてないのではと考えております。よろしくお願いいたします。
guest

0

No route matches "/posts/new"
は、「posts/newにマッチするURLがないよ」みたいなことを言われています。
これは概ね新規投稿ページを表示するアクション、「投稿する」ではなく、投稿を作るページです。
でまずこれを解決するために、
1.
app/views/posts/new.html.erbファイルが無いかもです。
上記の場所にファイルを作成してください。

  1. posts_controller.rbも以下のように書かれているのが多いです。こちらもうまくいかない場合書き変えてみてください。

rails

1def index 2 @posts = Post.all 3end 4 5def show 6 @post = Post.find_by(id: params[:id]) 7end 8 9def new 10 @post = Post.new 11end

3.上記でうまくいかない場合、 [POST] "/posts/new" で書かれているように[POST]が気になるのでrails routesとターミナルで実行して結果をみたいです。

投稿2019/06/14 16:04

hatsu

総合スコア1809

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問