Rails:创建评论验证路径(接受或拒绝)

时间:2012-08-29 09:31:20

标签: ruby-on-rails comments

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

为了管理验证部分,我在validate控制器中创建了Reviews方法。管理员在新评论附近有两个按钮(链接):Accep,Reject。该按钮会重定向到validate#reviews并发送相应的参数:review_idadmin_action(接受或拒绝)。

如何创建按钮(链接)的路径?

我尝试了很多像link_to "accept", polymorphic_path([review, :validate => 'accep'])这样的组合但没有成功。 我无法弄清楚网址的外观!当然,我之前已将get 'reviews/validate'添加到routes.rb。

如果你遇到类似的情况,你是怎么做的?有最佳做法吗?

更新

我也尝试了link_to "Accept", polymorphic_path(:reviews => review, :validate => 'accept'),但提供了 Nil位置。无法构建URI

更新2

我想使用validate方法(而不是创建两个方法acceptreject),因为有共同的数据处理,例如获取审核,检查admin auth,。 ..

所以,在我的控制器中,我正在寻找类似的东西:

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

在您的routes.rb中:

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

这将使urls review /:id / accept和reviews /:id拒绝通过助手accept_review_path(@review)和reject_review_path(@review)提供。

最后,在你的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

答案 1 :(得分:0)

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