仅显示编辑按钮到current_user(Rails 4)

时间:2015-09-28 09:33:43

标签: ruby-on-rails

我正在尝试允许用户仅在个人资料属于他们时才显示编辑按钮。目前,他们只允许编辑配置文件,如果它属于他们但我似乎无法隐藏按钮。到目前为止我有这个

<% if request.original_url == request.base_url + "current_user.id" %>
  <%= link_to "Edit Profile", edit_user_path(current_user), class: "btn btn-primary btn-xs" %>&nbsp;
<% end %>

这就是我要比较的内容:

request.original_url =&gt;本地主机:3000 /用户/ random_user

request.base_url +“users /”+ current_user.id =&gt;本地主机:3000 /用户/ CURRENT_USER

提前致谢。

2 个答案:

答案 0 :(得分:3)

<强>授权

为了给你一些观点,你会找到一个名为authorization的东西。

这与身份验证不同,因为它处理权限,而不是识别您的身份。我将在一分钟内了解它是如何工作的。

要解决您的问题,请执行以下操作:

//Book[bookId/text()='709F']/bookName/text()

我猜你在<%= link_to "Edit Profile", edit_user_path(current_user), class: "btn btn-primary btn-xs", if user_signed_in? && current_user == @user %> 动作上显示了这个动作,可以使用以下代码调用它:

user#show

这意味着如果您有以下路线:

#app/controllers/users_controller.rb
class UsersController < ApplicationController
   def show
      @user = User.find params[:id]
   end
end

您可以访问#config/routes.rb resources :users @user。值得注意的是current_user!= current_user。虽然@user的答案很简洁,但它不会验证用户是否拥有授权页面的用户;只是用户已通过身份验证

因此,您有几个规范:

  
      
  1. 您需要知道用户是否实际登录
  2.   
  3. 您需要确保您的weezing用户拥有授权来编辑个人资料(IE是他们的)
  4.   

我强烈建议您考虑使用logged-inCanCanCangems。我会告诉你CanCanCan:

#app/models/ability.rb
class Ability
   include CanCan::Ability

   def initialize(user)
      user ||= User.new # guest user (not logged in)
      can :edit, Article, id: user.id
   end
end

#app/views/users/show.html.erb
<%= link_to "Edit", edit_user_path(@user) if can? :edit, @user %>

Pundit

答案 1 :(得分:0)

这应该有效(稍微简单一些):

<% if current_user %>
  <%= link_to "Edit Profile", edit_user_path(current_user), class: "btn btn-primary btn-xs" %>
<% end %>