railsのルーティングエラーについて
解決したいこと
railsで投稿サイトを作っています。
現在planを投稿できる状態になっているのですが、それとは別にcourseも投稿できるようにしたいです。
そこでform_withを使ってcourseの投稿フォームを作成しました。投稿ページのURLは"/courses_post"です。
発生している問題・エラー
No route matches [POST]"/courses_post"
このようにルーティングエラーが出てしまいます。
https://gyazo.com/4543919389a2af3f98696a8852f75372
ルートの一覧はこうなっています。
該当するソースコード
↓がviewのcourses/new.html.erbです。
<div class="col-sm-6 offset-sm-3">
<%= form_with(model: @course, local: true) do |f| %>
<div class"form-group">
<%= f.label :number, 'Number' %>
<%= f.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :text, 'Text' %>
<%= f.text_area :text, class: 'form-control' %>
</div>
<%= f.submit 'courses_post', class: 'btn btn-primary btn-block' %>
<% end %>
</div>
↓がroutes.rbです。
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root to: 'toppages#index'
get 'login', to: 'sessions#new'
post 'login', to: 'sessions#create'
delete 'logout', to: 'sessions#destroy'
get 'signup', to: 'users#new'
get 'post', to: 'plans#new'
get 'courses_post', to: 'courses#new'
resources :users, only: [:index, :show, :create]
resources :plans, only: [:index, :show, :create, :destroy]
resources :courses, only: [:create, :destroy]
end
↓がcourses_controllerです。
lass CoursesController < ApplicationController
before_action :require_user_logged_in, except: [:index, :show]
def index
@courses = Course.order(id: :desc)
end
def new
@course = Course.new
end
def create
@plan = plan.find(params[:id])
@course = @plan.courses.build(course_params)
if @course.save
flash[:success] = 'コースを設定しました。'
redirect_to root_url
else
@course = @plan.courses.order(id: :desc)
flash.now[:danger] = 'コースの設定に失敗しました。'
render 'toppages/index'
end
end
def destroy
end
private
def course_params
params.require(:course).permit(:number, :outline)
end
end
自分で試したこと
routes.rbに
post 'courses_post', to: 'courses#create'
と書いたり、色々試しましたがずっと同じエラーです。
ちなみに最終的にはプランとコースを一対多にするつもりです。クックパッドの料理の手順のように、一つのプランに対してコース1,コース2があるような感じです。
その場合、投稿フォームをどのようにしたらよいのでしょうか。こちらももしお分かりであれば教えてください。
初学者なため根本的な間違いをしているかもしれません。少しでもわかることがあれば、どうかお力をお貸しください。