2008-11-07 14 views
17

मैं स्पष्ट रूप से अपने नियंत्रक से एक दृश्य को कॉल करना चाहता हूं।मैं रेल नियंत्रक से स्पष्ट रूप से एक दृश्य कैसे घोषित कर सकता हूं?

अभी मेरे पास है:

def some_action 
    .. do something ... 
    respond_to do |format| 
    format.xml 
    end 
end 

... तो यह मेरे some_action.xml.builder दृश्य कहते हैं। मैं कुछ और दृश्य कैसे कह सकता हूं? क्या प्रतिक्रिया में कोई पैरामीटर है?

धन्यवाद,

जेपी

उत्तर

37

आप निम्न का उपयोग कर प्रस्तुत करना की तरह कुछ कर सकता है:

आप एक विशिष्ट (टेम्पलेट) इस तरह दृश्य प्रस्तुत करने के लिए रेल बता सकते हैं कार्रवाई, या: नियंत्रक अगर यह अधिक सुविधाजनक है।

respond_to do |format| 
    format.html { render :action => 'show' } 
end 
14

अलग अलग तरीकों से आप क्या रेंडर करने के लिए नियंत्रित कर सकते हैं के लिए Rendering section of the ActionController::Base documentation देखें।

respond_to do |format| 
    format.html { render :template => "weblog/show" } 
end 
5

तुम भी पारित कर सकते हैं:

# Renders the template located in [TEMPLATE_ROOT]/weblog/show.r(html|xml) (in Rails, app/views/weblog/show.erb) 
    render :template => "weblog/show" 

# Renders the template with a local variable 
    render :template => "weblog/show", :locals => {:customer => Customer.new} 
2

आप अपने नियंत्रक में ऐसा करने से नियंत्रक के आंतरिक lookup_context संशोधित कर सकते हैं

before_filter do 
    lookup_context.prefixes << 'view_prefix' 
end 

और नियंत्रक सूची में अन्य सभी दृश्य उपसर्गों को देखने के बाद show अनुरोध का जवाब देते समय view/view_prefix/show.html लोड करने का प्रयास करेगा। डिफ़ॉल्ट सूची आमतौर पर application और वर्तमान नियंत्रक का नाम है।

class MagicController 
    before_filter do 
    lookup_context.prefixes << 'secondary' 
    end 

    def show 
    # ... 
    end 
end 

app.get '/magic/1` 

यह GET अनुरोध निम्न क्रम में एक दृश्य के लिए दिखेगा:

  • view/application/show.erb
  • view/magic/show.erb
  • view/secondary/show.erb

और पहली बार देखने पाया का उपयोग करें।

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