2015-02-04 6 views
1

새 사용자를 생성하는 양식이 있습니다.레일 : 다중 선택 선택 마지막 선택 만 제출

보기/사용자/new.html.erb

<%= form_for @user, :url => users_path do |f| %> 
    <select name="users" id='select-user'> 
    <option value="">Select at least one user</option> 
    <% User.all.each do |user| %> 
     <option value="<%= user.name %>"><%= user.name %></option> 
    <% end %> 
    </select> 
    <script type="text/javascript"> 
     var select = $('#select-user').selectize({ 
      persist: false, 
      maxItems: 3, 
      create: false, 
      valueField: 'name', 
      labelField: 'name', 
      searchField: ['name'], 
      render: { 
       item: function(item, escape) { 
        return '<div>' + 
         (item.name ? '<span class="select-name">' + escape(item.name) + ',</span>' : '') + 
        '</div>'; 
       }, 
       option: function(item, escape) { 
        var label = item.name; 
        return '<div>' + 
         '<span class="select-label">' + escape(label) + '</span>' + 
        '</div>'; 
       } 
      }, 
      preload: false, 
      load: function(query, callback) {} 
     }); 
    </script> 
    <%= f.submit "Submit", class: "btn btn-primary" %> 
<% end %> 

컨트롤러/user_controller.rb

def new 
     @user = User.new 
    end 

    def create 
     @user = User.new(user_params) 
     if @user.save 
     redirect_to root_path 
     else 
     redirect_to new_user_path 
     end 
    end 

    private 

     def user_params 
     params.require(:user).permit(:name, :users) 
     end 
: 나는 옵션이 관련된 여러 사용자를 추가 할 수 있도록 gem selectize-rails를 사용하려고 해요

new.html.erb에 코드가 잘 작동합니다. 사용자를 최대 3 명까지 추가 할 수 있습니다. 하지만 제출할 때 params["users"]에는 마지막으로 추가 한 사용자 만 포함됩니다. 아무리 추가하려고 했든 상관 없습니다. 왜이 사람이 될지 아는 사람 있습니까?

답변

4

변경 :

<select name="users" id='select-user'> 

<select name="users" id='select-user' multiple='multiple'> 

에 레일 선택에서 여러 값을 얻을 것으로 예상해야한다.

전체 선택 섹션은 레일 선택 도우미를 사용하여 다시 작성할 수 있습니다.

<select name="users" id='select-user'> 
    <option value="">Select at least one user</option> 
    <% User.all.each do |user| %> 
    <option value="<%= user.name %>"><%= user.name %></option> 
    <% end %> 
</select> 

<%= select :user, options_for_collection_for_select(User.all, :name, :name), 
    { prompt: "Please select.." }, 
    { multiple: true } %> 

은 자세한 내용 http://guides.rubyonrails.org/v2.3.11/form_helpers.html#making-select-boxes-with-easehttp://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html를 참조하게된다.