2011-04-13 10 views
5

मुझे नियंत्रक को जावास्क्रिप्ट चर को बीज करने की आवश्यकता है। उदाहरण के लिए, यदि ध्यान में रखते हुए मेरी कोड है निम्नलिखित -रेल में जावास्क्रिप्ट चर भेजो?

... <script type="text/javascript"> 
      variable_test = 'hello' 
     </script> 
    ... 

मैं, नियंत्रक की जरूरत है की तरह variable_test पाने के लिए -

def hello 
@variable_test = #Some code 
# @variable_test => 'hello' 
end 

दृश्य नमस्ते के पाठ्यक्रम है, और 'कुछ कोड' है मुझे नहीं पता कि कैसे करना है।

+0

, छिपी हुई फ़ील्ड बनाने कि फ़ील्ड का मान को असाइन अपने जेएस चर, AJAX के साथ इस hidden_field पोस्ट करें। –

उत्तर

3

(मैं नोट करने के लिए, यह भी है कि शायद आप मतलब है "चर", नहीं "varliable" है, लेकिन स्पष्ट रूप से है कि कार्यक्षमता इतने लंबे समय आप लगातार कर रहे हैं के रूप में प्रभावित नहीं करता है।) आप नहीं कर सकते हैं नियंत्रक को क्लाइंट साइड कोड भेजें जबतक कि आप किसी प्रकार का प्राप्त नहीं करते हैं, या पोस्ट करते हैं। JQuery की पोस्ट का उपयोग करने या विधियों को प्राप्त करने का प्रयास करें। आप jQuery का उपयोग नहीं कर रहे हैं तो आप कुछ इस तरह कर सकते हैं:

var variable_test = 'hello'; 
var el = document.createElement('script'); 
el.setAttribute('src', 'path_to_controller' + '?variable_test=' + variable_test); 
document.body.appendChild(el); 

फिर अपने नियंत्रक में आप क्या करेंगे:

@varliable_test = params[:varliable_test] 

वाक्य रचना थोड़ा दूर हो सकता है, लेकिन आप सामान्य मिल विचार।

+0

jQuery AJAX अनुरोध के साथ हल किया गया। धन्यवाद :) – Ariel

1

सबसे पहले, आपको किसी भी तरह नियंत्रक को कॉल करने की आवश्यकता है। या तो डेटा एक रूप में है और आप फॉर्म जमा करते हैं, या आप जावास्क्रिप्ट से AJAX कॉल करते हैं। पहले मामले में, आप फ़ॉर्म में एक छिपी हुई इनपुट को उस नाम और मूल्य के साथ जोड़ने के लिए जावास्क्रिप्ट का उपयोग करना चाहते हैं जो आप चाहते हैं। दूसरे मामले में, आपके AJAX अनुरोध के साथ भेजे गए डेटा को उस नाम-मूल्य जोड़ी को शामिल करना होगा जिसमें आप चाहते हैं। आप जो भी कर रहे हैं उसके बारे में और जानने के बिना मुझे और अधिक विशिष्ट नहीं मिल सकता है; क्या आप एक फॉर्म जमा कर रहे हैं या AJAX का उपयोग कर रहे हैं, और यदि आप AJAX का उपयोग कर रहे हैं, तो आप जावास्क्रिप्ट लाइब्रेरी का उपयोग कर रहे हैं, या AJAX के लिए अंतर्निहित रेल सहायतागार का उपयोग कर रहे हैं (उदा। दूरस्थ_फंक्शन)।

किसी भी तरह से, आप एक अनुरोध के साथ हवा में जाना चाहते हैं जिसमें नाम-मूल्य जोड़ी "varliable_test = हैलो" शामिल है। फिर आप

@varliable_test = params[:varliable_test] 

अपने नियंत्रक के भीतर मूल्य तक पहुंचने के लिए करें।

+0

मेरा मतलब "चर" और "varliable" नहीं था। वर्तनी की गलतियों के लिए खेद है, मैं मूल अंग्रेजी स्पीकर नहीं हूं। – Ariel

0

मैं भी इस प्रश्न का उत्तर ढूंढ रहा था। मेरे ऐप्स में से एक में मुझे Google के स्थान स्वत: पूर्ण से डेटा लेना होगा। यह दृष्टिकोण (Thaha केपी को ऋण: How to pass a javascript variable into a erb code in a js view?) मेरे लिए एक आदर्श समाधान की तरह लग रहा

दृश्य:

<script type="text/javascript"> 
    var variable_test = 'hello'; 
    $(document).ready(function() { 
    $('#model_variable_test').val(variable_test); 
    }); 
</script> 

... 

<%= form_for :model do |f| %> 
    ... 
    <%= f.hidden_field :variable_test %> 
    ... 
<% end %> 

नियंत्रक:

def hello 
    @variable_test = params[:model][:variable_test] 
end 
संबंधित मुद्दे