0

私のアプリでは、ユーザーは製品のレビューを書くことができます。ただし、レビューを公開する前に、管理者はレビューを受け入れるか拒否する必要があります (ユーザーがレビューを変更できるようにします)。

検証部分を管理するために、コントローラーvalidate内にメソッドを作成しました。Reviews管理者には、新しいレビューの近くに 2 つのボタン (リンク) があります: 承認、拒否。そのボタンは にリダイレクトしvalidate#reviews、適切なパラメータを送信します: review_idand admin_action(受け入れまたは拒否)。

ボタン (リンク) のパスを作成するにはどうすればよいですか?

私は多くの組み合わせを試しlink_to "accept", polymorphic_path([review, :validate => 'accep'])ましたが、成功しませんでした。URLがどのように見えるべきかを理解するのに苦労しています! もちろん、get 'reviews/validate'以前にroutes.rbに追加しました。

もしあなたが同じような状況にあったなら、あなたはどうしましたか?ベストプラクティスはありますか?

アップデート

も試しlink_to "Accept", polymorphic_path(:reviews => review, :validate => 'accept')ましたが、Nil の場所が提供されます。URI を構築できません

更新 2

レビューの取得、管理者認証のチェックなどの一般的なデータ処理があるため、validate(2 つのメソッドacceptとを作成する代わりに) メソッドを使用したいと思います...reject

だから、私のコントローラでは、次のようなものを探しています:

def activate
    # Get review, using review_id

    # Check in the admin has the right to validate the review

    # Execute the correct action: accept or reject.
end

private
def accept
    ...
end

def reject
    ...
end

前もって感謝します。

4

2 に答える 2

1

あなたの routes.rb で:

resources :reviews do
  member do
    put :accept
    put :reject
  end
end

これにより、ヘルパー accept_review_path(@review) および reject_review_path(@review) を介して URL reviews/:id/accept および reviews/:id reject を使用できるようになります。

最後に、ReviewsController に追加します

def accept
  @review = Review.find(params[:id])
  # Your accept logic here
end

def reject
  @review = Review.find(params[:id])
  # Your reject logic here
end
于 2012-08-29T09:48:19.623 に答える
0

検証コントローラーのメンバーとして新しいレビューgetメソッドを追加するだけです。次に、コマンドrake routeを指定して、このアクションのパスを検索します。次に、パラメータを使用してボタンへのパスを指定します。パラメータは1である必要があります。受け入れる、2。拒絶。

于 2012-08-29T09:41:13.473 に答える