在我的应用中,用户可以撰写产品评论。但在发布评论之前,管理员需要接受评论或拒绝评论(允许用户更改其评论)。
为了管理验证部分,我在validate
控制器中创建了Reviews
方法。管理员在新评论附近有两个按钮(链接):Accep,Reject。该按钮会重定向到validate#reviews
并发送相应的参数:review_id
和admin_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
方法(而不是创建两个方法accept
和reject
),因为有共同的数据处理,例如获取审核,检查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
提前致谢。
答案 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。拒绝。