0

在我的应用中,用户可以为产品撰写评论。但在发布评论之前,管理员需要接受或拒绝评论(允许用户更改评论)。

为了管理验证部分,我在控制器中创建了validate方法。Reviews管理员在新评论附近有两个按钮(链接):接受、拒绝。该按钮重定向到validate#reviews并发送适当的参数:review_idadmin_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方法(而不是创建两个方法acceptand 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 可用。

最后一件事,在您的评论控制器中添加

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

您只需添加一个新的审核获取方法作为验证控制器的成员。然后通过给出命令rake routes找到这个动作的路径。然后使用参数为您的按钮提供该路径。参数应该是 1 。接受,2。拒绝。

于 2012-08-29T09:41:13.473 回答