0

我正在尝试为特定的“审查请求”创建一个“审查”,但是我现在设置它的方式,当我选择“提供审查”按钮时,它会为随机审查请求创建一个审查。这是我的reviews_controller:

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

这是带有链接到创建操作的部分部分:

  <span class="offer_review">
    <%= link_to "Offer A Review", reviews_path(:review_request_id), :method => :post  %>
  </span>

我有

belongs_to :review_request

在 models/review.rb 文件中和

belongs_to :user

在 review_request.rb 文件中。

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

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

2 回答 2

0

这里实际上有两个问题。我解决了第一个问题(评论不是使用 review_request_id 创建的):

@review_request = current_user.review_requests.build(params[:review_request])

在 review_requests_controller 中,并且:

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

在视图中。

在发布这个问题之前我实际上已经解决了这个问题(并恢复到上面的代码),因为重定向到 Review#show 控制器也是错误的,并且即使创建了评论也会显示错误的 review_request 信息正确。(这样做是因为将 reviews/1 设为 review_request_id,而不是 review_id)

这是我让它正常工作的代码:

@review = Review.find(params[:id])
@review_request = ReviewRequest.find(@review.review_request_id)  
于 2013-01-22T01:09:53.270 回答
0

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

于 2013-01-17T17:08:34.557 回答