2014-10-09 52 views
0

我正在使用Devise创建可以评论的用户。当他登录时一切正常。但是,当访客用户(未登录)尝试访问该页面时,评论不会被显示。我试图直接渲染“_comment.html.erb”,但是这是一个错误。当用户注销时使用The_Comments显示注释gem

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

有没有快速解决这个问题?

+2

您可以在控制器中提到操作。与authenticate_user过滤器类似,但[show] – 2014-10-09 13:01:24

+0

除外如果您使用授权,则应该查看授予访客用户访问权限的方式。 – vikram 2014-10-09 13:14:14

回答

0

设计将创建一些助手在您的控制器和视图中使用。要设置用户认证控制器,只需添加这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你可以看Customizing Devise RailsCast Ryan Bates

而在你的show.html.erb页面,你可以把条件,如果用户登录后,新评论的表格应该显示为

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