Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当用户使用_comments gem注销时显示注释_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails 当用户使用_comments gem注销时显示注释

Ruby on rails 当用户使用_comments gem注销时显示注释,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在使用Desive创建可以发表评论的用户。他登录后一切正常。但当来宾用户(未登录)尝试访问该页面时,不会显示评论。我试图直接呈现“_comment.html.erb”,但这引发了一个错误 基本上,当用户没有登录时,他应该能够查看评论。当他登录时,他应该能够发表新的评论 是否有快速解决方法?Desive将创建一些帮助程序,用于控制器和视图中。要设置具有用户身份验证的控制器,只需在执行操作之前添加此项(假设您的设备型号为user): 因此,您可以在注释的控制器中编写 class Comments

我正在使用Desive创建可以发表评论的用户。他登录后一切正常。但当来宾用户(未登录)尝试访问该页面时,不会显示评论。我试图直接呈现“_comment.html.erb”,但这引发了一个错误

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


是否有快速解决方法?

Desive将创建一些帮助程序,用于控制器和视图中。要设置具有用户身份验证的控制器,只需在执行操作之前添加此项(假设您的设备型号为
user
):

因此,您可以在注释的控制器中编写

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

.....
.....
end

您可以在控制器中提及操作。与authenticate_用户过滤器类似,除了[show]之外,如果您正在使用授权,您可能应该查看您授予来宾用户访问权限的方式。
class CommentsController < ApplicationController
before_action :authenticate_user!, :except => [:show] # which will applied authentication except defined action

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