복붙노트

[RUBY-ON-RAILS] 루비 레일에 - f.select에서 다중 선택

RUBY-ON-RAILS

루비 레일에 - f.select에서 다중 선택

나는 내 양식에 다음 선택 상자를 가지고 :

Related Type: &nbsp; <%= f.select(:TYPE, [['Type A', 'Type A'],
                                  ['Type B', 'Type B'],
                                  ['Type C', 'Type C'],
                                  ['Type D', 'Type D'],
                                  ['Type E', 'Type E']
                                 ],{ :prompt => "Please select"}
                                 ) %>

나는 사용자가 복수의 선택을하고 또한 선택 상자 (5)의 크기를 만들 수 있도록합니다.

어떻게 위의 코드를 그렇게 할까?

해결법

  1. ==============================

    1.후 : 예를 들어, HTML 옵션을 다른 해시를 추가 {=> "선택하세요"프롬프트}

    후 : 예를 들어, HTML 옵션을 다른 해시를 추가 {=> "선택하세요"프롬프트}

    <%= f.select(:TYPE, [['Type A', 'Type A'],
                                      ['Type B', 'Type B'],
                                      ['Type C', 'Type C'],
                                      ['Type D', 'Type D'],
                                      ['Type E', 'Type E']
                                     ],{ :prompt => "Please select"},
                                       { :multiple => true, :size => 5 }
                                     ) %>
    

    당신이 이런 짓을하면 당신은 당신의 이동 할 수 있습니다 : prompt 옵션 (즉, HTML 속성이 레일 옵션으로 처리되지 않도록 불구} {빈을 유지합니다.)

    또한 당신은 당신의 컨트롤러 코드가 제대로 받아들이고 여러 값을 처리되었는지 확인해야합니다.

  2. ==============================

    2.모음의 경우, 시도

    모음의 경우, 시도

        <%= f.select(:TYPE, Categories.collect {|p| [ p.name, p.id ] }, 
                                               { :prompt => "Please select"}, 
                                               { :multiple => true, :size => 5 }) %>
    
  3. ==============================

    3.때 나는 완전히 동작하는 예제 (객체를 편집 할 때 사전 선택을 포함) 한 :

    때 나는 완전히 동작하는 예제 (객체를 편집 할 때 사전 선택을 포함) 한 :

    의 형태의:

    form_for(@object) do |f|
      = f.select :similar_ids, options_from_collection_for_select(Object.all, :id, :name, {:selected => @object.similar_ids.split(';')}), {}, {:multiple => true, :size => 4, :name => 'object[similar_ids][]'}
    

    그리고 Object.rb 모델 :

    class Object < ActiveRecord::Base
      before_save :handle_similars
    
      def handle_similars
        self.similar_ids = self.similar_ids.select(&:present?).join(';') 
        # .select(&:present?) is necessary to avoid empty objects to be stored
      end
    
      def similars
        self.class.find(self.similar_ids.split(';'))
      end
    
    end
    

    이 글은 저를 도와 :

    희망이 도움이

  4. ==============================

    4.HTML

    HTML

    <%= form.select(:product_ids, Product.all.collect {|p| [ p.name, p.id ] }, 
                                                       { :prompt => "Please select"}, 
                                                       { :multiple => true, :size => 5  }) %>
    

    제어 장치

    @category = Category.new(category_params) 
    
    def category_params
        params.require(:category).permit(:name, product_ids: [])
    end
    
  5. ==============================

    5.{: 프롬프트 => "선택하세요"}, {: 여러 => 사실 : 크기 => 5} {} 때 f.select 중요하다

    {: 프롬프트 => "선택하세요"}, {: 여러 => 사실 : 크기 => 5} {} 때 f.select 중요하다

  6. from https://stackoverflow.com/questions/4864513/ruby-on-rails-multiple-selection-in-f-select by cc-by-sa and MIT license