前提・実現したいこと
rails初学者です。画像投稿サイトを制作しています。
画像投稿を作っている際にエラーメッセージが表示されました。
newページの投稿をする際にsaveメソッドでエラーがでました。
様々なサイトを参考に施行錯誤しましたが、解決できませんでした。
ご教授お願いします。
発生している問題・エラーメッセージ
NoMethodError in PostsController#create undefined method `post_id' for #<Post:0x00007fa6c24daa60> Extracted source (around line #23): 21 @post = Post.new(post_params) 22 @post.user_id = current_user.id 23 if @post.save 24 redirect_back(fallback_location: root_path) 25 else 26 redirect_to posts_path 27 end
該当のソースコード
class
1 2def index 3 @posts = Post.all 4 end 5 6 def new 7 @post = Post.new 8 end 9 10 def show 11 @post = Post.find(params[:id]) 12 @favorite = Favorite.new 13 end 14 15 def edit 16 17 end 18 19 def create 20 @post = Post.new(post_params) 21 @post.user_id = current_user.id 22 if @post.save 23 redirect_back(fallback_location: root_path) 24 else 25 redirect_to posts_path 26 end 27 end
html
1<div class="container px-6 px-sm-0"> 2 <center> 3 <div style="padding-top:10px;"> 4 <div class="col-5 col-sm-5"> 5 <h3>新規投稿</h3> 6 </div> 7 </div> 8 9 <%= form_with model: @post, local: true do |f| %> 10 <div class="field"> 11 <div style="padding-top:5px;"> 12 <div class="col-5 col-sm-5 text-left"> 13 <p>投稿画像</p> 14 <%= f.attachment_field :image %> 15 </div> 16 </div> 17 </div> 18 19 <div class="field"> 20 <div style="padding-top:10px;"> 21 <div class="col-5 col-sm-5"> 22 <%= f.text_area :contents, :size=>"30x3", placeholder:"内容を入力してください", class: "form-control" %> 23 </div> 24 </div> 25 </div> 26 27 <div class="field"> 28 <div style="padding-top:10px;"> 29 <div class="col-5 col-sm-5"> 30 <p class="text-left">タグ</p> 31 <%= f.text_field :tag_list, value: @post.tag_list.join(','), class: "form-control" %> 32 </div> 33 </div> 34 </div> 35 36 <div class="field"> 37 <div style="padding-top:10px;"> 38 <div class="col-5 col-sm-5 text-left"> 39 <p>撮影ポイント(例)羽田空港第2ターミナル展望デッキ</p> 40 <div class='map-btn'> 41 <%= f.text_field :address, class: "form-control" %> 42 <div> 43 </div> 44 </div> 45 </div> 46 47 <div class="field"> 48 <div style="padding-top:20px; padding-bottom:50px;"> 49 <div class="col-5 col-sm-5"> 50 <%= f.submit "投稿する", class: "btn btn-success sign-btn" %> 51 </div> 52 </div> 53 </div> 54 55 56 57 <% end %> 58 59 </center> 60 61</div>
post.rb
1class Post < ApplicationRecord 2 acts_as_taggable 3 belongs_to :user 4 attachment :image 5 has_many :post_comments, dependent: :destroy 6 has_many :favorites, dependent: :destroy 7 has_many :favorited_users, through: :favorites, source: :user 8 validates_uniqueness_of :post_id, scope: :user_id 9 geocoded_by :address 10 after_validation :geocode, if: :address_changed? 11 def favorited_by?(user) 12 favorites.where(user_id: user.id).exists? 13 end 14end 15
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :posts, dependent: :destroy has_many :post_comments, dependent: :destroy has_many :favorites, dependent: :destroy has_many :favorited_posts, through: :favorites, source: :post def already_favorited?(post) self.favorites.exists?(post_id: post.id) end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/27 09:05