前回の質問で、Routing errorを質問させていただいたのですがこのエラーについて調べていると、以下の記事を見つけ参考にしました。
リンク内容
上記リンクURL: https://qiita.com/makoto15/items/88fde979fac6c4686680
この記事では、routes.rbに 『post 'post/new' => 'post#new'』のようにnewアクションにPOSTメソッドを指定してあげることで解決できるだろうと記述されていました。
自分の現在のpostコントローラーファイルはこのようになっています。
Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html root to: "top#index" post 'post/new' => 'post#new' resources :post end
すると、このようなエラー文が表示されました。
ActionController::InvalidAuthenticityToken in PostController#new ActionController::InvalidAuthenticityToken Extracted source (around line #215): def handle_unverified_request raise ActionController::InvalidAuthenticityToken end end end
このエラー文の解決について知っている方がいればご教授して欲しいです。どうかよろしくお願いします、、
今回のようなエラーは見たことがないので、調べてみます。
『追記』
winterbounさん、maisumakunさんに、form_withをご教示いただきviewのフォームを下記のように変更修正しました。
viewファイル
new.html.haml
1= render partial: 'shared/header' 2%body 3 .container 4 .row 5 .col-md-8.col-md-offset-2 6 %h2 ブログ記事投稿・編集 7 = form_with local:true, model: @articles do |f| 8 .form-date.form-group 9 .blog-name 10 %label.blog-label 日付 11 = f.date_field :dating, class: "input-time", name: "post_date", size: "20", placeholder: "日付を入力してください", style: "font-weight: bold;" 12 .form-title.form-group 13 .blog-name 14 %label.blog-label タイトル 15 = f.text_field :title, class: "input-title", name: "title", placeholder:"タイトルを入力してください。", style: "font-weight: bold;" 16 .form-letter.form-group 17 .blog-name 18 %label.blog-label 本文 19 = f.text_area :text, class: "input-control", rows: "15", name: "body", placeholder: "本文を入力してください。", style: "font-weight: bold;" 20 .form-input 21 = f.submit class: "btn btn-primary btn-sm", value: "投稿する" 22
postコントローラーファイル
post_controller.rb
1class PostController < ApplicationController 2 3 class Post 4 def create 5 # ストロングパラメータから精査されたデータだけをインスタンスに格納 6 @articles = Article.new(blogs_params) 7 8 # インスタンスに保存成功した場合の処理 9 if @articles.save 10 flash[:success] = "ユーザーを登録しました" 11 # redirect_to @articles 12 13 # インスタンスの保存に失敗した場合の処理 14 else 15 flash[:danger] = "ユーザーの登録に失敗しました" 16 # render :new 17 end 18 end 19 20 private 21 def blogs_params 22 params.require(:articles).permit(:dating, :title, :text) 23 end 24 end 25end
routes.rb
Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html root to: "top#index" resources :posts end
このように変更しました。これで、ブラウザを開くと
uninitialized constant PostsController Did you mean? PostController TopController
上記のエラーが表示。
コントローラ名が、post_controller.rbなので、resources postsだと難しそう?
resources :postに変えて実行すると、
フォームが表示され、投稿ボタンまで押せる!
しかし、次に下記のようなエラーが表示されました。。
Routing Error No route matches [POST] "/post/new" Rails.root: /Users/apple/create/portfolio
これは、また昨日からのposts/post宛てになっていない問題なのでしょうか?
知識が浅く申し訳ありません。エラーの確認と返信お願いします。。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/11 09:35 編集
2020/08/11 09:40 編集
2020/08/11 09:55
2020/08/11 10:03 編集
2020/08/11 10:05
2020/08/11 10:13
2020/08/11 10:16 編集
2020/08/11 10:17
2020/08/11 10:30
2020/08/11 10:30
2020/08/11 10:31
2020/08/11 10:33
2020/08/11 10:33
2020/08/11 10:34
2020/08/11 10:39 編集
2020/08/11 10:39
2020/08/11 10:44
2020/08/11 23:05
2020/08/11 23:08
2020/08/11 23:35 編集
2020/08/11 23:35
2020/08/12 00:48
2020/08/12 00:52
2020/08/12 03:05
2020/08/12 03:07
2020/08/12 03:08
2020/08/12 03:24
2020/08/12 03:52
2020/08/12 04:24
2020/08/12 04:28 編集
2020/08/12 04:28
2020/08/12 04:41
2020/08/12 04:42
2020/08/12 04:42
2020/08/12 04:43
2020/08/12 04:44
2020/08/12 04:45
2020/08/12 04:48
2020/08/12 04:52
2020/08/12 04:56
2020/08/12 04:59
2020/08/12 05:06
2020/08/12 07:43
2020/08/12 07:44
2020/08/12 07:48