设计管理员更改不同用户的属性
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
我正在使用 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