मैं एक FooController HTML और जे एस (AJAX) प्रश्नों का जवाब है:मैं जेएस रेल प्रतिक्रिया में एचटीएमएल कैसे शामिल करूं?
# app/controllers/foo_controller.rb:
class FooController < ApplicationController
layout 'foo'
def bar
respond_to do |format|
format.html # foo/bar.html.erb
format.js # foo/bar.js.erb
end
end
end
टेम्पलेट्स यह समर्थन करने के लिए:
# app/views/layouts/foo.html.erb:
<html>...<%= yield %>...</html>
# app/views/layouts/foo.json.erb:
<%= yield %>
और एक AJAX टेम्पलेट जिसमें मैं एक आंशिक प्रस्तुत करना चाहते हैं:
# app/views/foo/bar.js.erb:
dojo.byID('some_div').innerHTML = "<%= escape_javascript(render(:partial => 'some/partial')) %>";
तो जे एस टेम्पलेट बस में सादे पुराने जे एस (जैसे alert('hi');
) है, यह मेरी जे एस टेम्पलेट का उपयोग करता है। जब मैं रेंडर (आंशिक) डालता हूं, हालांकि, यह पूरी प्रतिक्रिया HTML टेम्पलेट का उपयोग करता है, जिसका अर्थ है कि यह अब वैध जेएस नहीं है।
सम्भावित समाधान लेआउट के लिए एक समारोह का उपयोग करने के लिए है:
class FooController < ApplicationController
layout :choose_layout
...
private
def choose_layout
return nil if request.xhr?
'foo'
end
end
लेकिन मेरी संस्करण काम करना चाहिए! ऐसा क्यों नहीं है
मुझे लगता है कि यह काम नहीं करने का कारण एक छोटा बग था: मेरे पास .json.erb टेम्पलेट था, लेकिन नहीं .js.erb एक और कोई डिफ़ॉल्ट नहीं .erb one। –