2012-11-05 77 views
2

我有一個用戶資源,並且我只想在該用戶登錄時才顯示show.html.erb文件中的「編輯」鏈接。請參閱屏幕截圖。僅當該用戶登錄時才顯示編輯用戶鏈接

Here is a list of users. Notice in the top right that Roger Sterling is logged in.

這是用戶的列表。在右上角注意,羅傑·斯特林登錄。

But if I click on Don Draper, the show.html.erb file displays the "Edit" button. I only want that to appear for Roger Sterling, in this case.

但如果我點擊唐德雷珀,該show.html.erb文件顯示「編輯」按鈕。在這種情況下,我只想讓羅傑斯特林出現。

我使用Devise進行身份驗證。任何想法如何實現這一目標?如果您需要查看任何可用的代碼,請告知我們。

回答

2

哈。好,我知道了。

這裏是在show.html.erb文件的循環:

<% if (@user.name == current_user.name) %> 
    <%= link_to 'Edit', edit_user_registration_path(@user) %> 
<% end %> 

和輔助方法:

def correct_user 
    user == current_user 
end 

感謝在正確的方向推!

3

您可以檢查current_user和顯示的用戶,如果它們相同,則會顯示「編輯」鏈接。您可以定義一個輔助方法是這樣的:

def correct_user?(user) 
    user == current_user 
end 

在你的節目UsersController的行動將有:

def show 
    @user = User.find(params[:id]) 
    ... 
end 

,並在您看來,您可以檢查:

<% if correct_user?(@user) %> 
    <%= link_to 'Edit', @user %> 
<% end %> 
+0

嗯。當我嘗試這個時,我得到一個錯誤:「未定義的方法'correct_user?'」。對不起,我是Rails的新手。你提供的是什麼或者什麼?我仍然不確定如何識別登錄的用戶和正確的用戶。 –

+0

你在哪裏定義'correct_user?'方法?它應該放在'users_helper.rb'中,並且你有一個名爲'current_user'的方法嗎?你正在使用哪種認證系統,或者你自己創建了哪一個? – Thanh

相關問題