我正在尝试使用Devise invitable来一次添加多个用户.基本上当有人创建一个帐户时,他们要做的第一件事就是使用可邀请的表单添加一堆用户……
只是不确定如何复制表单中的字段并让他们发送每个条目的创建请求.
提前致谢!
解决方法
我就是这样做的.
Provide a text area that accepts a comma-separated email list. Define
a new action that sends an invitation to each email in this list.
为batch_invite操作定义路由.
resources :users do collection do post 'batch_invite' end end
在users_controller中定义batch_invite操作
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中接受以逗号分隔的电子邮件列表的表单.
<%= 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演示了这两个后台作业处理器的用法.