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

link_tocreateアクションを含むパーシャルのセクションを次に示します。

  <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

ここには実際に2つの問題がありました。私は最初のもの(レビューは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_idではなくreview_request_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 に答える