2012-07-18 7 views
6

मुझे एक अजीब त्रुटि मिल रही है। मेरा ऐप मेरी स्थानीय होस्ट पर बिल्कुल ठीक चलता है, लेकिन मेरी Heroku सर्वर पर इस त्रुटि दे रही है: TypeError (String can't be coerced into Fixnum):टाइप एरर (स्ट्रिंग को फिक्सनम में घुमाया नहीं जा सकता है)?

यहाँ मेरी कोड है:

@rep = rep_score(@u) 

लॉग लाइन त्रुटि फेंक है के अनुसार। मैंने इसे टिप्पणी की है और हेरोोकू में बदलावों को धक्का दिया है और ऐप अभी ठीक चल रहा है।

def rep_score(user) 
rep = 0 
user.badges.each do |b| 
    rep = rep + b.rep_bonus 
end 
return rep 
end 

इसके अलावा rep_bonus डेटाबेस में एक पूर्णांक है:

यहाँ rep_score तरीका है।

फिर यह स्थानीयहोस्ट पर पूरी तरह ठीक है। आप क्या सोचते हैं मुझे बताओ।


rep_score विधि से return को हटाने के बाद यह ठीक काम कर रहा है। मैं रूबी के लिए अभी भी नया हूं, क्या return डालने में कुछ गड़बड़ है? यह अन्य भाषाओं से आदत है।

उत्तर

10

रूबी + स्ट्रिंग्स और गणितीय परिस्थितियों के संयोजन उपकरण के रूप में उपयोग करता है।

सरल फिक्स:

def rep_score(user) 
rep = 0 
user.badges.each do |b| 
    rep = rep + b.rep_bonus.to_i 
end 
return rep 
end 

to_irep_bonus बदल रहा है, जो शायद डेटाबेस मॉडल से है, से एक स्ट्रिंग एक पूर्णांक में उत्पन्न होती हैं। आप सेट कर सकते हैं कुछ अलग टाइपकास्ट हैं। कुछ रूपांतरण नाम के लिए:

  • सरणी: to_a
  • फ्लोट: to_f
  • पूर्णांक: to_i
  • स्ट्रिंग: to_s
+2

क्यों मैं कुछ टाइपकास्ट करने के लिए जब वे दोनों पूर्णांक हैं की जरूरत है ? और यह जवाब नहीं देता है कि यह स्थानीयहोस्ट पर क्यों काम करता है। – Deekor

+1

एक सार्वभौमिक सवाल क्यों है। मेरे पास बिल्कुल जवाब क्यों नहीं है, लेकिन यह इस मुद्दे को हल करता है। मैंने पाया है कि मेरे डेटाबेस से पूर्णांक खींचे जा रहे हैं, हमेशा सही प्रकार के रूप में सेट नहीं होते हैं। चाहे समस्या मेरे डीबी (मैंने MySQL का उपयोग किया हो) के साथ है या नहीं, मुझे एक सामान्य टाइपकास्ट के रूप में पता लगाने की परवाह नहीं है कि पूरे मुद्दे को हल किया गया है। लोकलहोस्ट और उत्पादन एक पूरी तरह से अलग वातावरण है। लाखों संभावनाएं हो सकती हैं। रूबी संस्करण अलग-अलग हैं, मणि बंदरगाह समान नहीं हैं, प्लेटफॉर्म अलग हैं, डेटाबेस संस्करण अलग हैं ... सूची चालू और चालू होती है, और मेरे पास जवाब देने के लिए 40 वर्ण शेष हैं। – CrazyVipa

+0

यदि आप मेरा संपादन पढ़ते हैं, तो आप देख सकते हैं कि मैंने इस प्रश्न का उत्तर देने से पहले 'वापसी' से छुटकारा पाने के साथ इसे ठीक कर दिया है। क्या कोई कारण है कि रिटर्न त्रुटि उत्पन्न कर रहा था? – Deekor

संबंधित मुद्दे

 संबंधित मुद्दे