Ruby on rails 未保存帖子id的评论

Ruby on rails 未保存帖子id的评论,ruby-on-rails,ruby,ruby-on-rails-3,blogs,formtastic,Ruby On Rails,Ruby,Ruby On Rails 3,Blogs,Formtastic,我遇到了一个小问题 我有两个模型:问题和评论 审查模式:问题id、用户id、评级、评论 在“show”视图中,我集成了以下表单(formtastic): My reviews controller的创建操作如下所示: def create @review = Review.new(params[:review]) @review.user_id = current_user.id if @review.save flash[:notice] = "Suc

我遇到了一个小问题

我有两个模型:问题和评论

审查模式:问题id、用户id、评级、评论

在“show”视图中,我集成了以下表单(formtastic):

My reviews controller的创建操作如下所示:

  def create
    @review = Review.new(params[:review])
    @review.user_id = current_user.id

    if @review.save
      flash[:notice] = "Successfully created review."
      redirect_to(@review.question)
    else
      redirect_to(@review.question)
    end
  end
但是,现在它似乎没有将问题id保存在问题id字段中。它确实很好地保存了用户id


有人知道我做错了什么吗?如果你需要日志,请告诉我!提前感谢

您需要在表单上为问题id添加一个隐藏字段。差不多

f.hidden_field :question_id

更具体地说,用户id被保存,因为您正在控制器中分配它。您需要将表单中的问题id传递给控制器,以便将其保存。

thx,我认为这可能是一个解决方案是的。但是,用户不能简单地更改字段的值,从而更改另一个问题的值吗?我想把它加入控制器会更安全?或者这不是一个因素?又来了!你是对的,你不应该相信任何你不想被用户修改为隐藏字段的东西。您应该始终执行某种权限检查,以查看用户是否能够执行他们尝试执行的操作。理想情况下,该责任被封装在授权模块(即cancan)中,而不是试图在控制器操作中强制执行。这意味着您应该有一个before筛选器,如果他们没有权限,则该筛选器将退出,或者如果他们没有权限,@review.save将失败。
f.hidden_field :question_id