解決したいこと
POST送信がなされrootにrenderされるようにしたい
発生している問題
list/newでデータをcreateするが、urlがhttp://127.0.0.1:3000/list/createで固まってしまい、rootに遷移されない。またリロードすると当然routeにget 'list/create'を設定していないためエラーになる。
ruby
1#route.rb 2Rails.application.routes.draw do 3 root 'top#index' 4 get '/' => 'top#index' 5 get 'list/new' => 'list#new' 6 post 'list/create' => 'list#create' 7 devise_for :users 8end 9
ruby
1#new.html.erb 2<div class="listnewPage"> 3 <div class="container"> 4 <%= form_with model:@list, url:{controller: 'list', action: 'create'}, class:'new_list', local: true do |f| %> 5 <% if @list.errors.any?%> 6 <p class='タイトルは1~255文字以内で入力してください'></p> 7 <% end %> 8 <%= f.label :title %> 9 <%= f.text_field :title, autofocus: true, class: 'form-control listName', placeholder: 'リスト名' %> 10 <div class="text-center"><%= f.submit '作成', class:'submitBtn' %></div> 11 <% end %> 12 </div> 13</div>
ruby
1#list.controller.rb 2class ListController < ApplicationController 3 def new 4 @list = List.new 5 end 6 7 def create 8 @list = List.new list_params 9 if @list.save 10 redirect_to :root 11 else 12 render action: :new 13 end 14 end 15 16 private 17 def list_params 18 params.require(:list).permit(:title).merge(user_id: current_user) 19 end 20end
回答1件
あなたの回答
tips
プレビュー