设计管理员更改不同用户的属性

Devise Admin changes attribute of different user

我正在使用 Devise 处理用户。一个用户具有 :admin 属性,管理员应该能够提高非管理员用户的级别。

我在控制器中得到了以下方法:

def rank_up
  if current_user.admin?
    user.rank = user.rank + 1
  end
end

视图中的这个:

- @user.each do |user|
  = user.name
  = user.rank

现在我想添加一个 link,它调用控制器中的 rank_up 方法,但是该方法如何知道应该更改哪个 user? 我想它必须与路线有关。

确实和路由有关系:)

遵循以下几行内容即可:

# controller
def rank_up
  user = User.find(params[:user_id]) # find by the `user_id` you pass in link_to
  user.rank_up # call model's method
  redirect_to(:back,notice: 'User hash been ranked up')
end

# routes.rb
resources :users do
  get :rank_up, on: :member # add a route for this action
end

# view
link_to 'Rank this user up', rank_up_user_path(user_id: user.id) # user from the `each` loop