5

के साथ रेल-एक्ट-टैग-टैग करने योग्य-ऑन टैग करता है, मैं टैग का चयन 2 ड्रॉपडाउन रखना चाहता हूं, जहां मैं कई मौजूदा टैग चुन सकता हूं और नए जोड़ सकता हूं।रेल 2 (और सरल_फॉर्म)

मैंने कई अलग-अलग तरीकों की कोशिश की है और मुझे या तो चयन 2 बॉक्स नहीं मिल रहा है या केवल एक मान पारित किया गया है (अंतिम एक)।

यह निकटतम मुझे मिल गया है (पिछले मान पास):

<%= f.input :tag_list, collection: @model.tags.map { |t| t.name }, input_html: { :style=> 'width: 300px', class: "taggable", data: { placeholder: "Tags" }} %> 

उत्तर

3

जैसा कि मैंने पहले उल्लेख किया है, सामान्य Select2 पुस्तकालय अब इनपुट प्रकार का चयन केवल का उपयोग करता है, लेकिन जब Select2-पूरी लाइब्रेरी का उपयोग कर इसे इनपुट प्रकार के साथ काम करता है।

तो, यह एक समस्या से बाहर निकलने का एक तरीका था।

फिर भी मुझे केवल एक ही मूल्य को पार करने में समस्याएं थीं। मैं वास्तव में उदाहरणों में से एक से कोड कॉपी/पेस्ट कर रहा था और यह गलत था। यह कहा गया था कि मजबूत पैरामीटर में शामिल होना चाहिए: tag_list, जो स्पष्ट है, लेकिन वास्तव में यह {tag_list []} है जो सभी मानों को स्वीकार करने के लिए आवश्यक था।

अब एक आकर्षण की तरह काम करता है।

+0

टैग_लिस्ट [] के बारे में आपका बिंदु मेरे लिए महत्वपूर्ण था - टैग ["ए", "बी", "सी"] जैसे तारों की सरणी के रूप में सबमिट किए जा रहे हैं, एक "स्ट्रिंग" जैसे "ए, बी, सी" –

1

यह एक प्रयास करें, आशा है कि यह आपके लिए काम करेंगे।

= f.input :tag_list, class: "taggable",data: {options: @model.tags.map { |t| t.name }} 

$(".taggable").select2(
    tags: $('.taggable').data('options') 
    width: "252px" 
); 
+0

दुर्भाग्य से यह मदद नहीं करता है। ऐसा लगता है कि इसे चुनिंदा प्रकार का इनपुट होना है। तो मैंने इस प्रकार जोड़ा:: चुनें, अन्यथा यह सिर्फ एक सामान्य इनपुट बॉक्स है। इस तरह मैं अब ड्रॉपडाउन प्राप्त करता हूं, लेकिन हाँ और कोई विकल्प नहीं, मेरे टैग नहीं। इसके अतिरिक्त, यह multiselect नहीं है। –

+0

मुझे इसके बारे में सोचने दें। –

2

मुझे इस काम के लिए:

कॉफी स्क्रिप्ट:

$(".tags").select2 
    theme: "bootstrap", 
    tags: true 
    tokenSeparators: [','] 

और ध्यान में रखते हुए:

= f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: @video.tag_list 

महत्वपूर्ण हिस्सा है कई: "कई"

और बेशक, मिट्जा ने कैसे कहा, {tag_li डालना न भूलें सेंट: []} अपने नियंत्रक मजबूत पैरामीटर के लिए।

और उदाहरण के रूप में, यदि आप लटकती में सुझाव के रूप में आपके टैग करना चाहते हैं, आप ऐसा कर सकता है:

= f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: ActsAsTaggableOn::Tag.most_used(30), value_method: :name 
संबंधित मुद्दे