2009-06-03 29 views
6

में एक उदाहरण चर तक पहुँचने मैं एक js.erb फ़ाइल से एक उदाहरण चर का उपयोग करने की कोशिश कर रहा हूँ।रेल: एक js.erb फ़ाइल

#controller 
def get_person 
    @person = Person.find(1) 

    respond_to do |format| 
    format.js{} 
    end 
end 

#get_person.js.erb 
alert('<%= @person.last_name %>') 

जब मैं करने के लिए [controller_name_here] /get_person.js ब्राउज़ ... मैं @person पर एक शून्य वस्तु त्रुटि मिलती है। (मैं जानता हूँ कि Person.find (1) एक वस्तु देता है)

नोट: मैं वास्तव में मुसीबत मेरी js.erb फ़ाइल में एक आंशिक प्रतिपादन कर रहा हूँ और कारण की पहचान करने की कोशिश कर रहा हूँ।

+0

क्या आंशिक में समस्या है? यदि ऐसा है, तो आपको पता होना चाहिए कि आंशिक लोगों को उनके कॉलर के वर्ग चर तक पहुंच नहीं है। आपको उस चीज़ में गुजरने की ज़रूरत है जिसे आप चाहते हैं। – workmad3

+0

चूंकि मैं अपनी js.erb फ़ाइल में आंशिक बना रहा हूं, क्या मेरी js.erb फ़ाइल में कक्षा चर के लिए उपयोग नहीं होना चाहिए? – Lee

+0

नहीं। आप उन्हें स्थानीय लोगों के रूप में में पारित करने के लिए है: <% = प्रस्तुत करना (: आंशिक => 'partials/foo', : स्थानीय लोगों => {: whatwhat => @somedata})%> – jonnii

उत्तर

5

मेरे लिए निम्नलिखित काम करता है:

/app/controllers/foo_controller.rb में:
class FooController < ApplicationController 
    def get_person 
    @person = Person.find(1) 
    respond_to do |format| 
     format.js 
    end 
    end 
end 
/app/views/foo/get_person.js.erb में:
<%= render :partial => '/foo/some_partial', :locals => { :person => @person } %> 
/app/views/foo/_some_partial.js.erb में:
person = { 
    last_name: '<%= person.last_name -%>' 
} 
+0

यह अजीब बात है, उदाहरण के चर सभी partials में दिखाई दे सकता है ताकि स्थानीय लोगों का निर्माण आवश्यक नहीं होना चाहिए (इस विशेष मामले में) करना है । यहाँ कुछ और अस्वस्थ है। –

+0

जो वास्तव में अजीब है। मैं – Lee

+0

ली "जबकि nil.last_name का मूल्यांकन त्रुटि उत्पन्न हुई": क्या आप वाकई प्रयोग कर रहे हैं "<% = person.last_name -%>" कर रहे हैं और नहीं "<% = @ person.last_name -%>" में आंशिक? –

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