2013-12-18 34 views
2

我有这样的形式:Rails的多个选项中选择只发送一个

<form accept-charset="UTF-8" action="/contracts/<%= params[:id] %>/addConsultants" method="POST" id="updateConsultants"><!----> 

    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="✓"> 
    <input name="authenticity_token" type="hidden" value="<%= session[:_csrf_token] %>"> 
    </div> 

    <div class="consultant_selector"> 
    <h2>Consultants</h2> 

    <select name="consultants_available" size="10" multiple> 
     <% @users.each do |u| %> 
     <option value="<%= u[:id_user] %>"><%= u[:name] %></option> 
     <% end %> 
    </select> 

    <ul> 
     <li class="triangle_right" id="add_consultant"></li> 
     <li class="triangle_left" id="remove_consultant"></li> 
    </ul> 

    <select name="consultants_selected" size="10" multiple> 
    </select> 
    </div> 

    <div> 
    <input type="submit" value="Mettre à jour" /> 
    </div> 
</form> 

而且在我的控制器:

def add_consultants 
    @contract = Contract.find(params[:id]) 
    @consultants = params[:consultants_selected]; 
    puts "------ Consultants: #{@consultants}" 

    redirect_to contract_path 
    end 

的想法是,我可以在第一选择中选择姓名,移动它们点击三角形,然后提交表单以将这些名称分配给合同。但是,当我这样做时,对puts的呼叫仅在第二次选择的3个中打印出一个ID(其中三个具有selected属性至true)。我如何获得多个值?

回答

5

就在这里找到了答案:https://stackoverflow.com/a/2196522/1796742

改变第二名称选择:

<select name="consultants_selected" size="10" multiple> 
</select> 

要:

<select name="consultants_selected[]" size="10" multiple> 
</select> 

合作。

+0

谢谢。这是正确的提示! –