我有一个用户资源,并且我只想在该用户登录时才显示show.html.erb文件中的“编辑”链接。请参阅屏幕截图。仅当该用户登录时才显示编辑用户链接
这是用户的列表。在右上角注意,罗杰·斯特林登录。
但如果我点击唐德雷珀,该show.html.erb文件显示“编辑”按钮。在这种情况下,我只想让罗杰斯特林出现。
我使用Devise进行身份验证。任何想法如何实现这一目标?如果您需要查看任何可用的代码,请告知我们。
我有一个用户资源,并且我只想在该用户登录时才显示show.html.erb文件中的“编辑”链接。请参阅屏幕截图。仅当该用户登录时才显示编辑用户链接
这是用户的列表。在右上角注意,罗杰·斯特林登录。
但如果我点击唐德雷珀,该show.html.erb文件显示“编辑”按钮。在这种情况下,我只想让罗杰斯特林出现。
我使用Devise进行身份验证。任何想法如何实现这一目标?如果您需要查看任何可用的代码,请告知我们。
哈。好,我知道了。
这里是在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
感谢在正确的方向推!
您可以检查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 %>
嗯。当我尝试这个时,我得到一个错误:“未定义的方法'correct_user?'”。对不起,我是Rails的新手。你提供的是什么或者什么?我仍然不确定如何识别登录的用户和正确的用户。 –
你在哪里定义'correct_user?'方法?它应该放在'users_helper.rb'中,并且你有一个名为'current_user'的方法吗?你正在使用哪种认证系统,或者你自己创建了哪一个? – Thanh