मुझे पता है कि यह एक मामूली सवाल है। लेकिन मैंने पूरे Google पर खोज की है लेकिन इस प्रश्न का सरल जवाब नहीं मिल रहा है।रेल पर रूबी: एक स्ट्रिंग को मुद्रित करने के लिए और यह कहां प्रदर्शित होता है?
मूल रूप से मैं एक पंक्ति है कि ध्यान में रखते हुए <%= link_to 'Run it', :method => 'doIt' %>
कहते हैं, तो इसी नियंत्रक में है, मैं doIt
विधि इस प्रकार है:
def doIt
puts "Just do it"
end
मैं सिर्फ जांच करने के लिए कि अगर मैं रन यह पर क्लिक करें, यह स्ट्रिंग आउटपुट करेगा "बस इसे करें"। मैंने इसे लोकहोस्ट पर चलाया और इसमें कोई त्रुटि नहीं है, लेकिन मुझे आउटपुट "बस इसे" कहीं भी नहीं मिल रहा है। यह रेल कंसोल या रेल सर्वर लॉग में प्रदर्शित नहीं होता है। मैं सिर्फ यह जानना चाहता हूं कि स्ट्रिंग को आउटपुट कहां रखता है, इसे कहां मिलना है?
राउंड 2: तो यह है कि मैं क्या करने की कोशिश की है ....
जोड़ा गया index.html.erb में इस लाइन (जो जड़ है)
<%= link_to 'Run it', :method => 'do_it' %>
और यूआरएल में, यह मूल रूप से http://localhost:3000/ है (चूंकि मैं रूट नियंत्रक # इंडेक्स रूट के रूप में)
डिस्प्ले सिर्फ एक रेखांकित है 'इसे चलाएं' जो 'do_it' से लिंक है नियंत्रक में विधि।
:नियंत्रक में, मैं इस विधि
def do_it
logger.debug "Just do it"
end
जब मैं http://localhost:3000/gollum_starters?method=do_it के लिए url परिवर्तन 'यह भागो', पर और development.log में क्लिक करें, निम्न में लिखा है शामिल
Started GET "/gollum_starters?method=do_it" for 127.0.0.1 at 2011-08-25 15:27:49 -0700
Processing by GollumStartersController#index as HTML
Parameters: {"method"=>"do_it"}
[1m[35mGollumStarter Load (0.3ms)[0m SELECT "gollum_starters".* FROM "gollum_starters"
Rendered gollum_starters/index.html.erb within layouts/application (3.6ms)
Completed 200 OK in 16ms (Views: 7.7ms | ActiveRecord: 0.3ms)
इसके अतिरिक्त, मैंने सभी लॉगर की कोशिश की। आतंक/जानकारी/घातक/आदि ... और Rails.logger.error/info/घातक/आदि, सभी ने विकास में "बस इसे करें" लाइन मुद्रित नहीं की लॉग
@ पॉल: मैंने पर्यावरण फ़ोल्डर या फ़ाइल को स्पर्श नहीं किया है, जब मैं एक नया रेल ऐप बनाया जाता है, तो यह डिफ़ॉल्ट रूप से मानता है, यह विकास में है?
@ मैज़: हाँ आप सही हैं, मैं सिर्फ परीक्षण करने की कोशिश कर रहा हूं कि do_it विधि कहां जा रही है या नहीं। ऐसा करने के लिए, मैं बस नियंत्रक में कुछ प्रिंट करना चाहता हूं। किसी भी तरह से सरल नहीं सोच सकता कि सिर्फ एक स्ट्रिंग को प्रिंट करें, लेकिन यह समस्या मुझे दुखी कर रही है। मैं सिर्फ टेक्स्टमैट का उपयोग कर रहा हूं, कोई आईडीई नहीं।
दौर 3:
@Paul THX बहुत है, लेकिन मैं त्रुटि
मेरे मार्गों फ़ाइलों का सामना करना पड़ा है:
resources :gollum_starters
root :to => "gollum_starters#index"
match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'
मेरे index.html.erb अब है :
<%= link_to "Do it", do_it_path %>
मेरा gollum_starters_controller।rb
def do_it
logger.debug 'Just do it'
end
मैं इस त्रुटि हो रही है:
Couldn't find GollumStarter with ID=do_it
त्रुटि यहाँ है, 2 पंक्ति:
def show
@gollum_starter = GollumStarter.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @gollum_starter }
end
end
मुझे आश्चर्य है कि क्यों यह मार्ग दिखाने के लिए करता है? जब मैं do_it पर क्लिक करता हूं, तो यह वास्तव में लोकलहोस्ट पर जाता है: 3000/gollum_starters/do_it जो सही है, लेकिन स्पष्ट रूप से शो विधि को त्रुटि बिंदु इंगित करता है?
दौर 4:
@Paul, मैं संसाधनों स्थानांतरित कर दिया: gollum_starters नीचे:
root :to => "gollum_starters#index"
match 'gollum_starters/do_it' => 'gollum_starters#do_it', :as => 'do_it'
resources :gollum_starters
लेकिन यह त्रुटि आई (OMG मैं अपने आप को मार करना चाहते हैं),
Template is missing
Missing template gollum_starters/do_it with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "~/project_name/app/views"
:/
---------- दौर 4 का जवाब ------------
असल रूप में त्रुटि बताते हैं, वहाँ कोई टेम्पलेट है (यानी एक वेबपेज) इसलिए दिखाने के लिए त्रुटि फेंक दिया। समाधान एक redirect_to जोड़ने के लिए है, इस मामले में मैं root_url पर रीडायरेक्ट करता हूं।
def do_it
logger.debug 'Just do it'
redirect_to(root_url)
end
सबकुछ अब काम करता है, "बस इसे करें" अंततः विकास.लॉग और रेल सर्वर कंसोल पर आउटपुट करता है।
धन्यवाद मेरी मदद करने के लिए माज़ और पॉल और एंड्रयू धन्यवाद। बहुत कुछ सीखो।
http://guides.rubyonrails.org/debugging_rails_applications.html#sending-messages
इसका मतलब यह है कि भले ही आप rails s
का उपयोग कर सर्वर शुरू नहीं करते उत्पादन अभी भी सही जगह पर जाना होगा:
जॉन, नीचे वर्णित स्पष्टीकरण देखें। आप रेल में आरईएसटी का मुख्य विचार खो रहे हैं, और यदि आप इसे समझते हैं तो आप रेल के साथ ज्यादा खुश रहेंगे। शुभकामनाएँ :) – Andrew
यूप इसे देखकर, विस्तृत स्पष्टीकरण –