Ruby (on rails)で投稿にコメントを付けようとしています。
それで以下の@commentを作成したのですが、buildメソッドでエラーが発生してしまいます。
参考:https://qiita.com/tsuchinoko_run/items/d671ea840bc0bfa90186
エラー: unknown attribute 'post_id' for Comment.
Request: Parameters: {"id"=>"15"}
Ruby
1(post_controller.rb) 2 def show 3 @post = Post.find_by(id: params[:id]) 4 @user = @post.user 5 @likes_count = Like.where(post_id: @post.id).count 6 @comment = @post.comments.build 7 end
post_idは@likes_countで使っているので関係ないと思うのですが。。。
ちなみに@commentを削除するとエラーは発生しません。
どなたか直し方を教えていただけないでしょうか。
よろしくお願いします。
以下、追記。
Ruby
1(schema.rb) (変更後) 2ActiveRecord::Schema.define(version: 2020_01_01_011953) do 3 4 create_table "comments", force: :cascade do |t| 5 t.string "content" 6 t.integer "post_id" 7 t.datetime "created_at", null: false 8 t.datetime "updated_at", null: false 9 t.index ["post_id"], name: "index_comments_on_post_id" 10 end 11 12 create_table "likes", force: :cascade do |t| 13 t.integer "user_id" 14 t.integer "post_id" 15 t.datetime "created_at", null: false 16 t.datetime "updated_at", null: false 17 end 18 19 create_table "posts", force: :cascade do |t| 20 t.text "content" 21 t.datetime "created_at", null: false 22 t.datetime "updated_at", null: false 23 t.integer "user_id" 24 t.string "post_image_name" 25 end 26 27 create_table "users", force: :cascade do |t| 28 t.string "name" 29 t.string "email" 30 t.datetime "created_at", null: false 31 t.datetime "updated_at", null: false 32 t.string "image_name" 33 t.string "password_digest" 34 end 35 36end
Ruby
1(schema.rb) 2class CreateComments < ActiveRecord::Migration[5.2] 3 def change 4 create_table :comments do |t| 5 t.string :content 6 t.references :posts, foreign_key: true 7 8 t.timestamps 9 end 10 end 11end
Ruby
1(comment.rb) 2class Comment < ApplicationRecord 3 belongs_to :posts 4 validates :content, presence: true 5end
Ruby
1(comments_controller.rb) 2class CommentsController < ApplicationController 3private 4 def content_params 5 params.require(:comment).permit(:content) 6 end 7 8 def create 9 post = Post.find(params[:post_id]) 10 @comment = post.comments.build(comment_params) 11 if @comment.save 12 flash[:success] = "コメントしました" 13 redirect_back(fallback_location: image_url(post.id)) 14 else 15 flash[:danger] = "コメントできません" 16 redirect_back(fallback_location: image_url(post.id)) 17 end 18 end 19 20 def destroy 21 post = Post.find(params[:post_id]) 22 @comment = post.comments.find(params[:id]) 23 @comment.destroy 24 redirect_back(fallback_location: image_path(post) 25 end 26end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/01/01 03:07
2020/01/01 03:12 編集
退会済みユーザー
2020/01/01 03:35 編集
2020/01/01 03:45
退会済みユーザー
2020/01/01 04:13
2020/01/01 04:31
退会済みユーザー
2020/01/01 13:56
退会済みユーザー
2020/01/01 14:23
2020/01/01 21:54