मैं शराब के रंगों का ट्रैक रखने के लिए रेल्स 4.1 में एनम का उपयोग कर रहा हूं।
Wine.rb
class Wine < ActiveRecord::Base
enum color: [:red, :white, :sparkling]
end
मेरे विचार में, मैं एक चयन करता हूं ताकि उपयोगकर्ता एक निश्चित रंग के साथ शराब का चयन कर सके
f.input :color, :as => :select, :collection => Wine.colors
यह निम्न HTML उत्पन्न करता है:
<select id="wine_color" name="wine[color]">
<option value=""></option>
<option value="0">red</option>
<option value="1">white</option>
<option value="2">sparkling</option>
</select>
हालाँकि, फॉर्म सबमिट करने पर, मुझे एक तर्क त्रुटि बताते हुए कहा गया है '1' is not a valid color
। मुझे इस बात का एहसास है क्योंकि color
समान होना चाहिए 1
और नहीं भी "1"
।
वहाँ एक स्ट्रिंग के बजाय एक पूर्णांक के रूप में रंग की व्याख्या करने के लिए रेल को मजबूर करने का एक तरीका है?
f.select :color, Wine.colors.to_a.map { |w| [w[0].humanize, w[0]] }
क्योंकिw
एक सरणी का प्रतिनिधित्व किया। यकीन नहीं क्यों, लेकिन शायद यह किसी की मदद करेगा।