2013-05-07 53 views
1

我在應用中有一個字段,當前允許管理員組邀請其他用戶(對組)。它適用於單個值,但我想知道如何調整它,以便它允許管理員輸入多個用逗號分隔的字段。在Rails領域處理多個逗號分隔的值

# form in view 
<%= form_tag({:controller => "group_members", :action => "invite_user"}, :method => "post") do %> 
    <%= hidden_field_tag 'group_id', @group.id%> 
    <%= text_field_tag :user_name %> 
    <%= submit_tag "Invite" %> 
<% end %> 

# group_members_controller 
def invite_user 
    @user = User.find_by_user_name(params[:user_name]) 
    @group_member = GroupMember.create!(:status=>"invited", :user_id=>@user.id, :group_id => params[:group_id], :token => SecureRandom.urlsafe_base64) 
    redirect_to :back, notice: "#{@user.user_name} has been invited to your group" 
end 
+0

是否使用自動完成或你正在寫的使用ID? – cortex 2013-05-07 22:22:16

+0

正在編寫user_name,很抱歉,text_field_tag應該命名爲:user_name而不是:user_id – yellowreign 2013-05-07 22:24:05

+0

請考慮使用自動完成功能,因爲很難正確寫入所有名稱。 – cortex 2013-05-07 22:33:45

回答

0

您可以讓params[:user_name]是一個逗號分隔的用戶列表,並在invite_user解析它:

@users = params[:user_name].split(/,\s*/). 

這將拆分params[:user_name]到一個數組,在一個逗號分割後跟零個或多個空白字符。將"Joe, John, Marry,Ann"轉換爲["Joe", "John", "Marry", "Ann"]

你可以然後執行以下操作還在邀請用戶:

@users.each do |username| 
    @user = User.find_by_user_name(params[username]) 
    @group_member = GroupMember.create!(:status=>"invited", :user_id=>@user.id, 
             :group_id => params[:group_id], 
             :token => SecureRandom.urlsafe_base64) 

end 

redirect_to :back, notice: "my_message" 
1

試試這個:

<%= form_tag({:controller => "group_members", :action => "invite_users"}, :method => "post") do %> 
    <%= hidden_field_tag 'group_id', @group.id%> 
    <%= text_field_tag :users %> 
    <%= submit_tag "Invite" %> 
<% end %> 

# group_members_controller 
def invite_users 
    user_names = params[:users].split(/,\s*/) 
    users = User.where(name: user_names) 
    group_id = params[:group_id] 

    @users.each do |user| 
    GroupMember.create!(:status=>"invited", :user_id=>user.id, :group_id => group_id, :token => SecureRandom.urlsafe_base64) 
    end 

    redirect_to :back, notice: "Users have been invited to your group" 
end