2012-09-20 18 views
11

में बड़े अक्षरों के साथ मार्ग मैं रेल में एक मॉडल बनाना चाहते हैं:अवहेलना रेल नियंत्रक मॉडल का नाम

rails generate model ABCThing 

तो यह एक मेज, abc_things पैदा करेगा। महान। समस्या नियंत्रक और रूटिंग के साथ आता है। मैं अपने नियंत्रक होना चाहते हैं:

Expected /app/controllers/abc_things_controller.rb to define AbcThingsController 
:

class ABCThingsController < ApplicationController 
end 

हालांकि, routes.rb

resources :abc_things, :only => [:index] 

में जोड़ने और इसी index दृश्य बनाने के बाद, मैं ब्राउज़र में निम्न त्रुटि मिलती है

समस्या को देखना आसान है ("ABCThings".tableize.classify => "AbcThing"), लेकिन मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए। मैं दृश्य से रूटर डिफ़ॉल्ट रूटिंग को नियंत्रक को ओवरराइड करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि कैसे।

जब आप आदेश चला

rails generate model ABCThings 

यह मॉडल और नहीं एक नियंत्रक उत्पन्न होगा किसी भी मदद की सराहना करते हैं (एक बेहतर सवाल खिताब के लिए और सुझावों!)

+1

मैं तुम्हें क्यों पृथ्वी पर पूछ सकता हूँ का समाधान किया जा रहा था होगा आप ऐसा करना चाहते हैं? सम्मेलन RoR शक्तियों में से एक हैं, उन्हें तोड़ दिया क्यों? बीटीडब्ल्यू मॉडल नाम बहुवचन नहीं होना चाहिए। – cthulhu

+0

मॉडल पीढ़ी में बहुवचन एक टाइपो था, लेकिन निश्चित रूप से आप सराहना कर सकते हैं कि अनगिनत तीन अक्षर शब्दकोष हैं जिसके लिए केवल संक्षिप्त शब्द का पहला अक्षर पूंजीकरण वास्तव में बहुत ही व्याकरणिक अर्थ नहीं बनाता है – rwb

+3

@cthulhu इसी कारण से रेल समर्थन करता है inflections। उन्हें * सम्मेलन * माना जाता है, कानून नहीं। – mahemoff

उत्तर

12

मैं इस मुद्दे था और इसके बाद के संस्करण समाधान के सभी प्रयास करने के बाद हो सकता है; घुमावदार का उपयोग कर मेरी समस्या को ठीक करने में सक्षम था।

मेरे मामले में मुद्दा था कि TLA::ThingsControllerTlaThingsController

निम्नलिखित डाल के रूप में फ़ोल्डर में मेरी initializers यह

तय config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.acronym 'TLA' 
end 
+1

यह रेल मार्ग है और इसे ऊपर उठाया जाना चाहिए। धन्यवाद – rwb

-1

। आप निम्नलिखित

rails generate scaffold ABCThings 

दोनों मॉडल और नियंत्रक उपयोग चाहते हैं मुझे लगता है कि आप रेल कमान और इसलिए समस्या हुई था

rails generate controller ABCThings 

आदेश के बाद नियंत्रक उपयोग उत्पन्न करने के लिए और आप कर सकते हैं का उपयोग करके नियंत्रक उत्पन्न नहीं कर रहे हैं /app/controllers/abc_things_controller.rb निम्नानुसार

class AbcThingsController < ApplicationController 
end 
+0

हू? मैंने मैन्युअल रूप से अपना नियंत्रक बनाया। मैं 'क्लास ABCThingsController rwb

2

आपको मार्ग में कस्टम नियंत्रक नाम सेट करना चाहिए s.rb:

resources :abc_things, :only => [:index], :controller => "ABCThings" 
+0

वही त्रुटि संदेश। मुझे यह भी लगता है कि आपका मतलब है ': नियंत्रक => "ABCThings" ' – rwb

+0

ओह, क्षमा करें, केवल' नियंत्रक 'भाग के बिना नाम, अब संपादित करें – byterussian

+2

यह [रेल गाइड] के अनुसार अब एक चेतावनी उत्पन्न करेगा (http://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use): "केवल निर्देशिका नोटेशन समर्थित है। रूबी निरंतर नोटेशन के साथ नियंत्रक निर्दिष्ट करना (उदाहरण के लिए। ': नियंत्रक =>' व्यवस्थापक :: उपयोगकर्ता अनुमतियां '') रूटिंग समस्याओं का कारण बन सकता है और परिणाम चेतावनी में हो सकता है। " –

2

यह कुछ बिंदु पर रूबी के साथ बदल गया है सकते हैं, लेकिन एक पंक्ति (परिवर्णी शब्दों या initialisms) में एक से अधिक टोपी के साथ वर्गों के नामकरण के लिए, आप अब फ़ाइल के नाम में अंडरस्कोर शामिल करने के लिए की जरूरत है।

# abc_thing.rb 

class ABCThing 

    def hello 
    puts "Hello World" 
    end 

end 

या

class AbcThing 

    def hello 
    puts "Hello World" 
    end 

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