मैं एक json प्रतिक्रिया जिसमें कुछ मूल्य एक आंशिकjson ERB टेम्पलेट अन्य एचटीएमएल आंशिक
#projects_Controller.rb
def index
respond_to do |f|
f.json
end
end
# index.json.erb
{
"html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
}
द्वारा प्रदान की गई एचटीएमएल है के लिए कोशिश कर रहा हूँ नहीं मिल रहा है लेकिन मैं निम्नलिखित त्रुटि मिलती है:
ActionView::Template::Error (Missing partial projects/disclaimer with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>
[:json], :locale=>[:en, :en]} in view paths "c:/rails/app/views", "c:/rails/vendor/plugins/more/app/views", "C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-1.1.8/app/views")
ऐसा लगता है कि JSON अनुरोध .json.erb के साथ आंशिक रूप से प्रस्तुत करता है लेकिन नहीं .html.erb, जो मेरे पास है। क्या मेरे लिए 'html' निर्दिष्ट करने का कोई तरीका है।
जोड़ा: हैं अनुरोध 'जे एस' है, और index.js.erb में मैं लगभग एक ही कोड प्रस्तुत करना: # index.js.erb
disclaimer = {
"html":"<%= raw escape_javascript(render :partial => 'projects/disclaimer') %>"
}
यह परियोजनाओं मिल रहा है/अस्वीकरण .html.erb और इसे सही ढंग से प्रस्तुत करता है। मुझे आश्चर्य है कि उसमें इतनी असंगतता क्यों है कि अगर किसी ने जेएस से अनुरोध किया है, तो उसके टेम्पलेट में कोई आंशिक प्रतिपादन partial_name.html.erb की तलाश करेगा, लेकिन अगर किसी ने जेसन से अनुरोध किया है, तो आंशिक प्रतिपादन partial_name.json.erb के लिए पूछेगा?
धन्यवाद
यह दृष्टिकोण JSON को प्रतिपादित करने वाले नियंत्रक के अंदर से भी काम करता है; मैंने 'self.formats = [: html]' सेट किया है, फिर 'render_to_string (: partial =>' an_html_partial ',: स्थानीय => {: जो भी => जो कुछ भी}), और फिर मैं जेसन जुर्माना प्रस्तुत कर सकता हूं। – alxndr
यदि आपके पास अन्य जेसन आंशिक भी हैं, तो आप इसके बजाय 'self.formats + = [: html]' करना चाहेंगे। –