2011-06-02 14 views
13

मेरी रेल 3 आवेदन का उपयोग मैं अजाक्स स्वरूपित एचटीएमएल प्राप्त करने के लिए:क्या उस विधि को कॉल करना संभव है जो रेल 3 में नियंत्रक से "content_tag" का उपयोग करता है?

$.get("/my/load_page?page=5", function(data) { 
    alert(data); 
}); 

class MyController < ApplicationController 
    def load_page 
    render :js => get_page(params[:page].to_i) 
    end 
end 

get_pagecontent_tag विधि का उपयोग करता है और app/views/my/index.html.erb में भी उपलब्ध होना चाहिए।

के बाद से get_page कई अन्य तरीकों का उपयोग करता है, मैं में सभी कार्यक्षमता समझाया:

# lib/page_renderer.rb 
module PageRenderer 
    ... 
    def get_page 
    ... 
    end 
    ... 
end 

और कहा कि जैसे कि यह शामिल हैं:

# config/environment.rb 
require 'page_renderer' 

# app/controllers/my_controller.rb 
class MyController < ApplicationController 
    include PageRenderer 
    helper_method :get_page 
end 

लेकिन, के बाद से content_tag विधि app/controllers/my_controller.rb में उपलब्ध नहीं है , मुझे निम्न त्रुटि मिली:

undefined method `content_tag' for #<LoungeController:0x21486f0> 

तो, मैं जोड़ने की कोशिश की:

module PageRenderer 
    include ActionView::Helpers::TagHelper  
    ... 
end 

लेकिन फिर मुझे मिल गया:

undefined method `output_buffer=' for #<LoungeController:0x21bded0> 

क्या मैं गलत कर रहा हूँ?

आप इसे कैसे हल करेंगे?

+0

क्या हुआ अगर आप में शामिल हैं: 'ActionView :: सहायकों :: TagHelper आपके नियंत्रक में। बीटीडब्लू, ऐसा लगता है कि आप अपने उत्तरदाताओं के प्रश्नों से मेरे उत्तर का उपयोग करते हैं :) – apneadiving

+0

@apneadiving: मैंने 'एक्शन व्यू :: हेल्पर्स :: टैगहेल्पर' शामिल किया जैसा कि आप ऊपर देख सकते हैं। हां, मेरे अन्य प्रश्न का आपका जवाब उचित लगता है, इस तथ्य को छोड़कर कि 'get_page' प्रतिनिधित्व के साथ सौदा करता है, लेकिन नियंत्रक में परिभाषित किया गया है :) –

+0

अरे, मेरी टिप्पणी वास्तव में बेकार थी, क्षमा करें, मैं बाद में एक और नजर डालेगा :) – apneadiving

उत्तर

2

सहायकों को वास्तव में कर रहे हैं कोड को देखने और नियंत्रकों में इस्तेमाल किया जाएगा जो बताता है कि क्यों यह ऐसा करने के लिए इतना मुश्किल है नहीं जा सकते,।

एक और (IMHO, बेहतर) तरीका यह है कि आप एचटीएमएल पैरामीटर के चारों ओर लिपटा चाहते हो के साथ एक दृश्य या आंशिक निर्माण करने के लिए किया जाएगा [: पेज] .to_i। फिर, अपने नियंत्रक में, आप popnder करने के लिए render_to_string का उपयोग कर सकते हैं: load_page विधि के अंत में मुख्य रेंडर में जेएस। फिर आप उन सभी चीजों से छुटकारा पा सकते हैं और यह काफी साफ होगा।

संयोग से, helper_method तुम क्या करने की कोशिश कर रहे हैं की विपरीत है - यह एक नियंत्रक विधि दृश्यों में उपलब्ध बनाता है।

+0

धन्यवाद! मैंने आपके सुझाव की कोशिश की और यह एक आकर्षण की तरह काम करता है :) –

28

प्रस्तावित सवाल का जवाब करने के लिए, ActionView :: प्रसंग त्रुटि को हल करने के लिए बस प्रासंगिक मॉड्यूल शामिल output_buffer पद्धति निर्धारित करता है,:

module PageRenderer 
include ActionView::Helpers::TagHelper 
include ActionView::Context  
... 
end 
+0

'एक्शन व्यू के लिए अपरिभाषित विधि' content_tag ':: हेल्पर्स :: टैगहेल्पर: मॉड्यूल ' –

+0

' seed.rb' में भी काम करता है! – anthony

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

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