我正在使用Devise处理用户。一个用户具有属性:admin
,管理员应该能够提高非管理员用户的排名。
我在控制器中有以下方法:
def rank_up
if current_user.admin?
user.rank = user.rank + 1
end
end
并在视图中显示:
- @user.each do |user|
= user.name
= user.rank
现在我想添加一个调用控制器中rank_up
方法的链接,但该方法如何知道应该更改哪个user
?
我想它必须对路线做点什么。
答案 0 :(得分:1)
它确实与路线有关:)
以下几行中的内容可以:
# 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