2014-10-09 50 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 %>