2010-09-08 58 views
4

我剛剛開始使用Ruby和Rails,嘗試了Rails 3的Devise。我有一個循環的帖子列表,每個帖子都有一個關聯用戶。我只想顯示與當前用戶關聯的帖子的編輯控件。用Devise在Rails 3中測試'current_user'

<% @posts.each do |post| %> 
    <%= link_to "show" %> 
    <% if current_user = post.user %> 
    <%= link_to "edit" %> 
    <% end %> 
<% end %> 

(以上被簡化,並從內存中,所以我敢肯定,語法不完全正確 - 但你得到的要點。)

如果沒有用戶登錄,帖子按照預期顯示 - 有一個Show鏈接,但沒有Edit鏈接。但是,如果我完全登錄,則會顯示所有Edit鏈接,即使是由不同用戶創建的杉木帖也是如此。

我已經驗證在控制檯User.find(1) != User.find(2),但由於某些原因,current_user = post.user計算結果爲真,不管是誰目前已登錄。這是做CURRENT_USER是一個幫手,而不是一個「真正的」 user對象?我如何使用current_user來獲得ACTUAL當前用戶進行比較?

感謝,

回答

7

你分配,而不是測試 - 使用== - 即

<% if current_user == post.user %> 
+0

我也許應該讀過我的書的Ruby更跳躍上的Rails之前。不知道爲什麼我沒有本能地使用'==',我是白天的C#開發人員......謝謝! – 2010-09-08 16:56:53

相關問題