Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 控制器的创建操作中的生成方法正在创建给错误的用户_Ruby On Rails - Fatal编程技术网

Ruby on rails 控制器的创建操作中的生成方法正在创建给错误的用户

Ruby on rails 控制器的创建操作中的生成方法正在创建给错误的用户,ruby-on-rails,Ruby On Rails,我试图为一个特定的“审查请求”创建一个“审查”,但我现在设置它的方式是,当我选择“提供审查”按钮时,它会为一个随机审查请求创建一个审查。 以下是我的控制器: class ReviewsController < ApplicationController def create @review = current_user.reviews.build(params[:review_request_id]) if @review.save flash[:succ

我试图为一个特定的“审查请求”创建一个“审查”,但我现在设置它的方式是,当我选择“提供审查”按钮时,它会为一个随机审查请求创建一个审查。 以下是我的控制器:

class ReviewsController < ApplicationController

  def create
    @review = current_user.reviews.build(params[:review_request_id])
    if @review.save
      flash[:success] = "Review Created"
      redirect_to review_path(@review)
    else 
      flash[:error] = "Review Offer Sent"
      redirect_to root_url
    end
  end

  def show
    @review_request = ReviewRequest.find(params[:id])
  end
end
在models/review.rb文件和

belongs_to :user
在review_request.rb文件中

这是“审阅请求”控制器中的索引操作。带有链接的分部在索引视图中。可能是问题的一部分

  def index
    @review_requests = ReviewRequest.paginate(page: params[:page])
  end

尝试对“params[:review_request_id]”使用“put”语句,并检查您得到的值。问题似乎出在表单字段的定义上。

这里实际上有两个问题。我用以下方法解决了第一个问题(审查不是使用审查请求id创建的):

在审查请求中,以及:

<%= link_to "Offer A Review", reviews_path(:review_request_id => review_request), :method => :post  %>

您确定
create
方法中的
params[:review\u request\u id]
正确吗。如果不是,那么您将不会得到请求的审阅,而是另一个审阅。首先确保它是您为特定的“审阅请求”选择的。请添加review.build方法的定义。@Alex-我使用的是has\u many关联,因此来自rails api:collection.build(attributes={},…)返回集合类型的一个或多个新对象,这些对象已使用属性实例化并通过外键链接到此对象,但尚未保存。@Saurabh-我肯定认为params属性是错误的,但是我不知道如何修复它。我感觉我没有正确地实例化参数。你能提供代码吗?或者在哪里找到它?我在创建操作中输入了puts params[:review_request_id],但它没有显示在rails服务器中。对不起,我是新来的。:)在create action-'puts“my id===”+params[:review\u request\u id]中写下这句话。它返回为空,我想我应该猜到了,因为插入到“reviews”中的数据显示:[“review\u request\u id”,nil]正在为随机的审核请求生成审核,因为审核请求\u id是随机设置的(据我所知)
  def index
    @review_requests = ReviewRequest.paginate(page: params[:page])
  end
@review_request = current_user.review_requests.build(params[:review_request])
<%= link_to "Offer A Review", reviews_path(:review_request_id => review_request), :method => :post  %>
@review = Review.find(params[:id])
@review_request = ReviewRequest.find(@review.review_request_id)