Ruby on rails 未定义的方法`审查';对于#<;用户:0x00007fa70dc93f40>;
我的应用程序中有3个模型-用户、发布和评论。用户Ruby on rails 未定义的方法`审查';对于#<;用户:0x00007fa70dc93f40>;,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我的应用程序中有3个模型-用户、发布和评论。用户有很多:帖子,帖子有很多:评论 要发布帖子或删除评论,用户应登录 class ReviewsController < ApplicationController def new @post = Post.find(params[:post_id]) @review = Review.new end def create @post = Post.find(params[:post_
有很多:帖子
,帖子有很多:评论
要发布帖子或删除评论,用户应登录
class ReviewsController < ApplicationController
def new
@post = Post.find(params[:post_id])
@review = Review.new
end
def create
@post = Post.find(params[:post_id])
@review = @post.reviews
@review = current_user.reviews.build(comment_params)
if @review.save
flash[:success] = "Hurray!!"
redirect_to user_path(current_user)
else
flash.now[:danger] = "Hurray!!"
render 'new'
end
# @review = current_user.review.post.new(comment_params)
# @review.save
# flash[:success] = "Comment Posted succesfully"
# redirect_to user_path(current_user)
end
private
def comment_params
# params.require(:review).permit(:comment)
params.require(:reviews).permit(:comment)
end
end
日志中的参数:
{"authenticity_token"=>"XunDfWighjQFYPmGOuIBMXIaiKzNM1BEDiU5
OU2DxvZAvBCP+ERzYSEI/eA/FYIiEPKjo32BX6vqZDm2fQmHrQ==",
"review"=> {"comment"=>"dsf"}, "commit"=>"Add", "post_id"=>"12"}
任何地方都没有用户id。通过“post_id”的方式是否正确
我希望我至少现在能够解释这个问题。您需要添加
用户id
来查看模型并将它们关联起来。用户有许多:评论
并且评论属于:用户
。将迁移添加到
def change
add_reference :reviews, :user, foreign_key: true
end
并更换控制器
class ReviewsController < ApplicationController
def new
@post = Post.find(params[:post_id])
@review = @post.reviews.new
end
def create
@post = Post.find(params[:post_id])
@review = @post.reviews.build(review_params)
@review.user_id = current_user.id
if @review.save
flash[:success] = "Hurray!!"
redirect_to user_path(current_user)
else
flash.now[:danger] = "Hurray!!"
render 'new'
end
end
private
def review_params
params.require(:review).permit(:comment)
end
end
class-ReviewsController
是的,将post\u id
传递给控制器是正确的
class ReviewsController < ApplicationController
def new
@post = Post.find(params[:post_id])
@review = @post.reviews.new
end
def create
@post = Post.find(params[:post_id])
@review = @post.reviews.build(review_params)
@review.user_id = current_user.id
if @review.save
flash[:success] = "Hurray!!"
redirect_to user_path(current_user)
else
flash.now[:danger] = "Hurray!!"
render 'new'
end
end
private
def review_params
params.require(:review).permit(:comment)
end
end
class ReviewsController < ApplicationController
def new
@post = Post.find(params[:post_id])
@review = @post.reviews.new
end
def create
@post = Post.find(params[:post_id])
@review = @post.reviews.build(review_params)
@review.user_id = current_user.id
if @review.save
flash[:success] = "Hurray!!"
redirect_to user_path(current_user)
else
flash.now[:danger] = "Hurray!!"
render 'new'
end
end
private
def review_params
params.require(:review).permit(:comment)
end
end