コメント機能の実装
解決したいこと
Ruby on Railsでtwitterのような映画の感想を投稿するWebアプリをつくっています。
投稿(movie)に対してコメントする機能を実装した際に、dbに保存されません
初学者で解決方法に手を焼いて為、教えていただければ幸いです。
発生している問題・エラー
show.html.erb
<div class="comment-show-item">
<% @comments.each do |comment| %>
<div class="comment-index-item">
<div class="comment-right">
<%= comment.content %>
</div>
</div>
<% end %>
</div>
<div class="comment-show-item">
<%= form_with model:[@movie,@comment],local:true do |f| %>
<%= f.text_field :content %>
<%= f.submit %>
<% end %>
</div>
movies_controller
def create
@movie=Movie.new(
content: params[:content],
title: params[:title],
user_id: @current_user.id
)
if @movie.save
flash[:notice]= "投稿を作成しました"
redirect_to "/movies"
else
render("comments/:id/new")
end
comments_controller
def new
@comment = Comment.new
@movie =Movie.find(params[:movie_id])
@user = User.find(@movie.user_id)
end
def create
@movie=Movie.find_by(id: params[:movie_id])
@comment = @current_user.comment.new(comment_params)
if @comment.save
flash[:notice]= "コメントしました"
redirect_to movie_path(@movie)
else
flash[:notice]="コメントに失敗しました"
render movie_path(@movie.id)
end
end
def destroy
@movie=Movie.find_by(id:params[:id])
@comment = Comment.find(params[:id]).destroy
redirect_to movie_path
end
private
def comment_params
comment_params = params.require(:comment).permit(:content).merge(user_id: :current_user,reply_comment: params[:movie_id])
end
movie.rb
has_many :comment,foreign_key: :reply_comment,dependent: :destroy
belongs_to :user
comment.rb
belongs_to :user
belongs_to :movie
routes
resources :movies do
resources :comments
collection do
get 'search'
end
end
schema
create_table "comments", force: :cascade do |t|
t.text "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.integer "reply_comment"
end
create_table "likes", force: :cascade do |t|
t.integer "user_id"
t.integer "movie_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "movies", force: :cascade do |t|
t.text "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.string "title"
end
自分で試したこと
form_withにミスがあるか確認しましたが以前問題は解決しませんでした
0