我使用Devise创建可以发表评论的用户。登录后一切正常。但是当访客用户(未登录)尝试访问该页面时,评论不会显示。我试图渲染" _comment.html.erb"直接,但这是一个错误。
基本上,当用户未登录时,他应该能够查看评论。当他登录时,他应该能够发表新的评论。
有快速解决方法吗?
答案 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 %>