使用The_Comments gem注销用户时显示注释

时间:2014-10-09 12:58:08

标签: ruby-on-rails ruby devise

我使用Devise创建可以发表评论的用户。登录后一切正常。但是当访客用户(未登录)尝试访问该页面时,评论不会显示。我试图渲染" _comment.html.erb"直接,但这是一个错误。

基本上,当用户未登录时,他应该能够查看评论。当他登录时,他应该能够发表新的评论。

有快速解决方法吗?

1 个答案:

答案 0 :(得分:0)

Devise将创建一些帮助程序,以便在控制器和视图中使用。要设置具有用户身份验证的控制器,只需添加此before_action(假设您的设计模型为User):

before_action :authenticate_user! # Which will ask for authenticate user to login

因此,您可以在评论的控制器中写下

class CommentsController < ApplicationController
before_action :authenticate_user!, :except => [:show] # which will applied authentication except defined action

.....
.....
end

对于more details,您可以在Ryan Bates的 Customizing Devise RailsCast 中看到非常好的解释

在您的show.html.erb页面中,您可以设置条件,如果用户已登录,那么新评论的表单应该显示为

<% if user_signed_in? %>
<%= render "comments/form" %> # new comment's form
<% end %>