2011-06-04 12 views
6

संपादित करें: आगे परीक्षण पर, ऐसा लगता है कि यह मुद्दा साइट-विशिष्ट है और सैद्धांतिक रूप से ठीक काम करना चाहिए।रूबी मैकेनाइजेशन: टेक्स्टरेरा के लिए मल्टीलाइन मान विलय हो जाता है


टेक्स्टरेरा मान जो एकाधिक लाइनों पर होना चाहिए, सभी को एक पंक्ति पर सबमिट किया जा रहा है।

textarea_values = "value1\nvalue2" 

form = page.form_with(:id => 'form_id_here') 
form['my_textarea'] = textarea_values 
submit = form.button_with(:value => 'Submit') 
form.click_button(submit) 

मूल्य प्रस्तुत किया जा रहा बजाय के रूप में इरादा एकाधिक पंक्तियों में होने का value1\nvalue2 है।

क्या फॉर्म वैल्यू जोड़ने का कोई और तरीका है जिसे मैं कोशिश कर सकता हूं?

+2

क्या आप वास्तविक कोड में सिंगल कोट्स का उपयोग कर रहे हैं? –

+0

@ एमयू बहुत छोटा है: यह सही है, सबमिट किए जाने वाले मान में एक शाब्दिक '\ n' – Marco

+0

@ मार्क थॉमस है: मैं डबल कोट्स – Marco

उत्तर

0

टिप्पणी में @nash की तरह मैं ऊपर दिए गए उदाहरण में समस्या को समझ नहीं सकता। "\ n" एक नियंत्रण चरित्र है (लाइन फीड, लाइन मार्कर)।

देखें: http://en.wikipedia.org/wiki/Control_character

तो इस अंकन के साथ कुछ भी गलत नहीं है जब तक आप एक उद्धृत स्ट्रिंग का उपयोग करे (जिसमें "\" के साथ भागने से काम नहीं करता)। दांतेदार कोड में

textarea_values = <<VALUES 
value1 
value2 
VALUES 

आप भी उपयोग कर सकते हैं:

आप इस तरह के अंकन से उलझन में हो, तो आप भी हियरडॉक अंकन रूबी में उपयोग कर सकते हैं

# ... code ... 
    # ... code ... 
    textarea_values = <<-VALUES 
     value1 
     value2 
    VALUES 
    # ... code ... 
# ... code ... 

अंतर यहाँ "< < -VALUES" में हाइफ़न है, जिसका अर्थ है कि आप अपने हेरडोक एंडिंग टैग को भी कोड में इंडेंट कर सकते हैं। ध्यान रखें, इस उदाहरण के मानों में अग्रणी रिक्त स्थान/टैब हैं, इसलिए आप पहले उदाहरण पसंद करेंगे - यह पूरे कोड ब्लॉक के इंडेंटेशन को तोड़ देता है लेकिन मूल्य रेखाओं में तब कोई अग्रणी स्थान नहीं है।

विशाल टेक्स्टरेरा इनपुट के लिए मैं वास्तव में हेरेडोक नोटेशन पसंद करता हूं, यह चीजों को आसान और अधिक पठनीय बनाता है।

हियरडॉक बारे में अधिक जानकारी:

0123:

रूबी के बारे में सब कुछ उपयोग तार

1

क्या आपने वास्तव में यहां पोस्ट किए गए कोड का प्रयास किया है?

वैसे मेरे पास ऐसी वेबसाइट है जिसमें आंतरिक संदेश प्रणाली है, जिसमें दो टेक्स्टफील्ड और एक टेक्स्टरेरा है।

मेरी प्रारंभिक नमूना कोड:

@page = @agent.get "thewebsiteItold" 

form = @page.form_with(:id => 'form') 

textarea_values = "value1\nvalue2" 

form['to'] = "username" 
form['subject'] = "somesubject" 
form['text'] = textarea_values 

button = form.button_with(:name => "send") 

@agent.click_button button 

हालांकि प्रपत्र इस एचटीएमएल था:

in 'method_missing': undefined method `id' for #<Mechanize::Form:0x21efb98> (NoMethodError) 

ठीक है, तो मैं बदल दिया है:

<form method="post" action="/somethingyoudontneedtoknow" name="header" id="form"> 

मेरी स्क्रिप्ट चलाने इस त्रुटि दी आईडी के लिए आईडी और एक और समस्या मिली:

in `<main>': undefined method `click_button' for #<Mechanize:0x253f380> (NoMethodError) 

इससे पहले कि आप मुझे बताएं, मैंने "बटन" की सामग्री को दोबारा जांच लिया, जिसमें सही बटन था जिसे मैं फॉर्म एक्शन को आग लगाने के लिए दबा देना चाहता था।

तो मैं तदनुसार these mechanize examples को बदल दिया और कोड अच्छी तरह से काम:

form = @page.form_with(:name => 'header') 

textarea_values = "value1\nvalue2" 

form['to'] = "username" 
form['subject'] = "anotherboringsubject" 
form['text'] = textarea_values 

button = form.button_with(:name => "send") 

@agent.submit(form, button) 

और, ठीक है, ऐसा लगता है कि उम्मीद से काम किया:

resulting message on chrome

निष्कर्ष: यदि चेक अपने मूल कोड जो आपने हमें पोस्ट किया है उससे बहुत दूर है या मशीनीकरण का संस्करण link जैसा ही मैंने पारित किया है

+0

इसका परीक्षण करने के लिए धन्यवाद, मुझे ऐसा करना चाहिए था ... करीब निरीक्षण के बाद, मुझे एहसास हुआ कि यह मुद्दा साइट-विशिष्ट प्रतीत होता है और मैकेनाइज से जुड़ा हुआ नहीं है। – Marco

+0

सिर्फ जिज्ञासा के लिए, क्या आप बता सकते हैं कि यह क्या था? या यह बहुत विशिष्ट है? – bpaulon

+0

दुर्भाग्य से यह एक आंतरिक वेबपृष्ठ जनता के लिए उपलब्ध नहीं है, क्षमा करें। यद्यपि कि आपकी इस सहायता के लिए धन्यवाद। – Marco

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