2

我有一个用户资源,我想仅在该用户登录时在 show.html.erb 文件中显示“编辑”链接。请参阅屏幕截图。

这是用户列表。 请注意右上角的 Roger Sterling 已登录。

这是用户列表。请注意右上角的 Roger Sterling 已登录。

但是如果我点击 Don Draper,show.html.erb 文件会显示

但是如果我点击 Don Draper,show.html.erb 文件会显示“编辑”按钮。在这种情况下,我只希望出现在 Roger Sterling 身上。

我正在使用设计进行身份验证。关于如何做到这一点的任何想法?如果您需要查看任何可用代码,请告诉我。

4

2 回答 2

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 %>
于 2012-11-05T07:01:45.793 回答
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

感谢您朝着正确的方向推动!

于 2012-11-06T05:02:55.103 回答