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

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

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

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

Q&A

1回答

3955閲覧

rails form_with ルーティングがうまくいかない

laminne

総合スコア80

Ruby on Rails 5

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

0グッド

1クリップ

投稿2019/03/04 12:43

前提・実現したいこと

form_forで新規登録画面を実装中に以下のエラーメッセージが発生しました。

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

Routing Error No route matches [POST] "/projects/new"

該当のソースコード

projects_controller.rb

ruby

1 2class ProjectsController < ApplicationController 3 def index 4 @project = Project.new 5 end 6 def create 7 @project = Project.new(project_params) 8 task.save! 9 redirect_to projects_path, notice: "プロジェクト「#{project.name}」の作成に成功しました。" 10 end 11 12 def show 13 end 14 15 def new 16 end 17 18 def edit 19 end 20 21 private 22 23 def project_params 24 params.require(:project).permit(:name, :subtitle, :description) 25 end 26end

new.html.slim

slim

1 2h1 プロジェクト作成 3.nav.justify-content-end 4 = link_to 'プロジェクト一覧', projects_path, class: 'nav-link' 5= form_with model:@project, local: true do |f| 6 .form-group 7 = f.label :name 8 = f.text_field :name, class: 'form-control', id: 'project_name' 9 .form-group 10 = f.label :subtitle 11 = f.text_field :subtitle, class: 'form-control', id: 'project_subtitle' 12 .form-group 13 = f.label :description 14 = f.text_area :description, rows: 5, class: 'form-control', id: 'project_description' 15 .form-group 16 = f.submit nil, class: 'btn btn-primary'

routes.rb

Ruby

1Rails.application.routes.draw do 2 root to: 'projects#index' 3 resource :projects 4 #post 'projects/new', to: 'project#create' 5 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 6end

rails routes

Prefix Verb URI Pattern Controller#Action root GET / projects#index new_projects GET /projects/new(.:format) projects#new edit_projects GET /projects/edit(.:format) projects#edit projects GET /projects(.:format) projects#show PATCH /projects(.:format) projects#update PUT /projects(.:format) projects#update DELETE /projects(.:format) projects#destroy POST /projects(.:format) projects#create rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create

試したこと

実際に表示されているHTMLは<form action="/projects/new" accept-charset="UTF-8" method="post">
となっていて、ルーティングにないところにリクエストが飛んでいるのはわかるのですが、変更の仕方がわからず、質問しました。

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

rails 5.2.1
ubuntu on WSL

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

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

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

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

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

m.ts10806

2019/03/04 12:55

回答依頼いただいて申し訳ないのですが、Railsのみは全く知識技術ないので回答しかねます。 もっと当該タグのスコアの高い方に依頼してください
scsi

2019/03/04 12:55

同上
guest

回答1

0

増えていくリソースを扱う場合、ルーティングをresource :projectsではなくresources :projectsとしてください。

投稿2019/03/05 08:18

maisumakun

総合スコア145183

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問