如何使用Devise在Admin Rails 3.2中进行基于浏览器的新用户批准

时间:2013-03-10 23:31:03

标签: ruby-on-rails devise ruby-on-rails-3.2

我使用Rails 3.2创建了一个简单的目录,并设计了新用户在使用该站点之前需要获得批准的位置。我按照“How To: Require admin to activate account before sign_in”中的说明操作,管理员用户现在可以看到已批准和未批准用户的不同索引页的列表。到现在为止还挺好。

我的问题是用户审批流程。目前我批准Rails控制台中的用户。我希望管理员用户能够通过他们的浏览器批准用户。我不知所措。我知道我需要在每个未经批准的用户旁边添加“批准”和“不批准”链接,但接着是什么?

在摘要中,我知道单击这些链接应激活用户模型或控制器中的方法,然后使用flash重定向,但我已经偏离了我从初学者教程中所知道的。

我不确定在我的观点和路线中放什么。我是否需要一个特殊的隐藏表单,当单击“批准”提交按钮并且按钮是唯一可见元素时,只将“已批准”从false更改为true?

如果有人能让我开始朝着正确的方向前进,我可以从中找到答案。

1 个答案:

答案 0 :(得分:1)

@ sas1ni69的评论引导我Ruby on Rails link_to With put Method,这让我找到了解决方案。

在我看来,我补充道:

<%= link_to "approve", approve_user_path(user.id)  %>

对于我添加的路线:

match 'users/:id/approve'=> 'users#approve_user', as: 'approve_user'

我的用户控制器我添加了:

def approve_user
  user = User.find(params[:id])
  user.approved = true
  if user.save
    flash[:notice] = "#{user.full_name} approved"
  else
    flash[:alert] = "#{user.full_name} approval failure"
  end
  redirect_to :back
end

似乎工作就像一个魅力!谢谢大家!