我正在尝试用户设计可以一次添加多个用户。基本上当有人创建一个帐户,他们想要做的第一件事是添加一堆用户使用可访问的窗体...设计可邀请的批量邀请 - Ruby on rails
只是不知道如何复制窗体中的字段,并让他们发送创建请求为每个条目。
在此先感谢!
我正在尝试用户设计可以一次添加多个用户。基本上当有人创建一个帐户,他们想要做的第一件事是添加一堆用户使用可访问的窗体...设计可邀请的批量邀请 - Ruby on rails
只是不知道如何复制窗体中的字段,并让他们发送创建请求为每个条目。
在此先感谢!
这就是我该怎么做的。
提供一个接受以逗号分隔的电子邮件列表的文本区域。定义 向此列表中的每封电子邮件发送邀请的新操作。
让我们为此示例假设用户模型和用户控制器。
定义batch_invite操作的路由。
resources :users do
collection do
post 'batch_invite'
end
end
在users_controller
def batch_invite
#Validate the user_emails field isn't blank and emails are valid
params[:user_emails].split(",").each do |email|
User.invite!(:email => email)
end
#redirect_to appropriate path
end
接受一个逗号分隔在一个textarea的电子邮件列表的表格定义batch_invite动作。
<%= form_tag batch_invite_users_path, :method => :post do %>
<%= label_tag "Email ids of people you'd like to invite." %>
<%= text_area_tag :user_emails %>
<%= submit_tag "Invite!" %>
<% end %>
有两点要注意:
如果你喜欢你的控制器瘦,你可以在逻辑移到模型,例如,通过在用户模式,通过建立一个send_batch_invitations方法params [:user_emails]作为来自用户控制器的该方法的参数。
由于发送邀请的方法可能需要足够的时间才能完成,因此我建议您将此任务分配给后台作业处理器,如delayed_job或resque。 有railscasts演示这两个后台作业处理器的用法。
我认为你使用的是devise_invitable gem。用户是否仅使用电子邮件地址邀请一批用户? – Shreyas
是的,你有两个权利。使用Devise_invitable,您只需输入电子邮件地址,然后用户将收到一封电子邮件,并使用发送给他们的接受链接设置其密码。 –