2012-11-05 75 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

相关问题