前提・実現したいこと
投稿機能を実装しようとしてるのですが、ActiveStorageを使いツイッターのような画像と
一緒に文を投稿できるようにしたいです。保存の段階でエラーが起きました。
発生している問題・エラーメッセージ
下記はエラー画面の画像です。
https://i.gyazo.com/16315fb483b2e0e39987370b8ca83227.png
https://i.gyazo.com/be9cd088c8c3a902208bd698af3cb750.png
ActiveSupport::MessageVerifier::InvalidSignature at /tweets ActiveSupport::MessageVerifier::InvalidSignature
該当のソースコード
ruby
1 def create 2 #binding.pry 3 @tweets = Tweet.create(tweet_params) 4 end
試したこと
Strong Parametersが適切に設定できていないっぽいので確認してみましたがわかりませんでした。
def tweet_params
params.require(:tweet).permit(:image, :text).merge(user_id: current_user.id)
end
ruby
1tweetsコントローラーです 2 3class TweetsController < ApplicationController 4 before_action :set_tweet, only: [:edit, :show, :update, :destroy] 5 before_action :move_to_index, except: [:index, :show, :search] 6 7 def index 8 @tweets = Tweet.includes(:user).order("created_at DESC") 9 end 10 11 def new 12 @tweet = Tweet.new 13 end 14 15 def create 16 #binding.pry 17 @tweets = Tweet.create(tweet_params) 18 end 19 20 def destroy 21 if @tweet.destroy 22 redirect_to root_path 23 end 24 end 25 26 def edit 27 end 28 29 def update 30 @tweet.update(tweet_params) 31 end 32 33 def show 34 @comment = Comment.new 35 @comments = @tweet.comments.includes(:user) 36 end 37 38 def search 39 @tweet = Tweet.search(params[:keyword]) 40 end 41 42 private 43 def tweet_params 44 params.require(:tweet).permit(:image, :text).merge(user_id: current_user.id) 45 end 46 47 def set_tweet 48 @tweet = Tweet.find(params[:id]) 49 end 50 51 def move_to_index 52 unless user_signed_in? 53 redirect_to action: :index 54 end 55 end 56end 57 58下記マイグレーションファイルになります 59 60class CreateTweets < ActiveRecord::Migration[6.0] 61def change 62 create_table :tweets do |t| 63 t.text :text, null: false 64 t.references :user, null: false, foreign_key: true 65 t.timestamps 66 end 67 end 68end 69 70下記はtweetモデルです 71 72belongs_to :user 73has_one_attached :image 74validates :text, presence: true 75 76下記はroutesです 77 78Rails.application.routes.draw do 79 devise_for :users 80 root 'tweets#index' 81 resources :users 82 resources :tweets do 83 resources :comments, only: [:create] 84 collection do 85 get 'search' 86 end 87 end 88end 89 90下記は投稿画面のviewです 91 92<div class="tweets-contents"> 93 <div class="tweets-main"> 94 <%= form_with model: @tweets, url: tweets_path, local: true do |f| %> 95 96 97 <div class="img-upload"> 98 <div class="weight-bold-text"> 99 投稿画像 100 </div> 101 <div class="click-upload"> 102 <p> 103 クリックしてファイルをアップロード 104 </p> 105 <%= f.file_field :image, id:"posts-image" %> 106 <div id="image-list"></div> 107 </div> 108 </div> 109 110 <div class="new-posts"> 111 <div class="posts-explain"> 112 <div class="weight-bold-text"> 113 投稿内容 114 </div> 115 <%= f.text_area :text, class:"posts-text", id:"post-info", placeholder:"text" ,rows:"7" ,maxlength:"1000" %> 116 </div> 117 </div> 118 <%# 下部ボタン %> 119 <div class="sell-btn-contents"> 120 <%= f.submit "投稿する" ,class:"sell-btn" %> 121 </div> 122 <%# /下部ボタン %> 123 </div> 124 <% end %> 125</div> 126
補足情報(FW/ツールのバージョンなど)
簡単なsnsのアプリケーションを開発中の超初心者です。
よろしくお願いいたします。
ruby '2.6.5'
'rails', '~> 6.0.0'
'mysql2', '0.5.3'
あなたの回答
tips
プレビュー