2011-06-06 21 views
17

मैं अपने एप्लिकेशन/सार्वजनिक फ़ोल्डर में index.html के लिए एक पुनर्निर्देशन करना चाहता हूं।मैं रूट - public/index.html पर रीडायरेक्ट कैसे करूं?

def get_current_user 
    @current_user = current_user 
    if @current_user.nil? 
     redirect_to root_path 
    end 
end 

मैं इसे कैसे प्राप्त करूं?

मैं अपने routes.rb में जड़ संशोधित नहीं किया है (इसकी अभी भी टिप्पणी की)

# root :to => "welcome#index" 

मैं कह रहा root_path अपरिभाषित है कोई त्रुटि मिलती है।

मैं रूट.आरबी कैसे संशोधित करूं ताकि root_path जनता/index.html को इंगित करे?

+4

'root_path' का उपयोग करने के बजाय, 'redirect_to'/'' – meagar

+0

@meagar इसका उत्तर दें, टिप्पणी न करें, तो सवाल पर टिप्पणी करने के बजाय आप अपना उत्तर क्यों नहीं बनाते? – MBO

+1

@ एमबीओ यह कोई जवाब नहीं है। सवाल यह था कि "मैं एक्स कैसे करूं?" और मेरी टिप्पणी "मत करो, इसके बजाय वाई करें"। यह एक स्वीकार्य उत्तर आईएमओ नहीं है, और मैं इसे इस तरह पोस्ट करने के लिए दूसरों को कम कर दूंगा। – meagar

उत्तर

5

आप जो करना चाहते हैं वह रेल संगत नहीं है।

रेल एमवीसी, सी नियंत्रक के लिए सी, देखने के लिए वी है।

तो इसके आंतरिक दोनों की आवश्यकता है।

ठीक है, public/index.html डिफ़ॉल्ट रूप से प्रदर्शित होता है लेकिन ऐसा इसलिए है क्योंकि प्रक्रिया को छोड़ दिया जाता है।

तो, आप static नियंत्रक को index क्रिया के साथ बना सकते हैं और यह संबंधित दृश्य है (बस इसमें अपने वर्तमान public/index.html फ़ाइल की सामग्री कॉपी/पेस्ट करें)।

फिर सेट:

root :to => "static#index" 

और कृपया, public/index.html फ़ाइल :)

+7

रेल 'सार्वजनिक' निर्देशिका से स्थिर सामग्री की सेवा करने का समर्थन करता है। यह पूरी तरह से "रेल संगत" है। – meagar

+3

@ एपनेडविंग रेल प्रत्येक एकल परियोजना के लिए बॉक्स के बाहर एक स्थिर 'सार्वजनिक/index.html' के साथ आता है, और यह बहुत अच्छी तरह से काम करता है।आप उसे बता सकते हैं कि ** ** ** डेटाबेस को स्पर्श करना चाहिए या नहीं तो वह 'एमवी' में 'एम' का उपयोग नहीं कर रहा है। – meagar

+7

इसके अलावा "रेल एमवीसी है, नियंत्रक के लिए सी, वी देखने के लिए। इसलिए इसके आंतरिक दोनों को" पूरी तरह झूठी है। हर बार जब आप 'redirect_to' करते हैं तो आप एमवीसी में "वी" का उपयोग नहीं कर रहे हैं। – meagar

19

हटाने आप :controller के रूप में किसी भी गैर खाली स्ट्रिंग और करने के लिए पथ पारित करके स्थिर फ़ाइल का नाम मार्ग प्रदान कर सकते हैं मार्ग के लिए :action के रूप में फ़ाइल:

Application.routes.draw do 

    root :controller => 'static', :action => '/' 
    # or 
    # root :controller => 'static', :action => '/public/index.html' 

end 

# elsewhere 

redirect_to root_path # redirect to/

मान लें कि आप एक public/index.html है, यह क्या सेवा हो जाएगा वेद।

+0

ऐसा करने का भी अर्थ है कि जिस दृश्य में सेवा की गई है, उस ऐप में अन्य विचारों के साथ कुछ लेना देना नहीं है जो वास्तव में असंभव है। दृश्यों में एक आम लेआउट होता है, यह रेल ड्रवाईनेस की सुंदरता है। – apneadiving

+7

@apneadiving ऐसा करना साझा साझा लेआउट की कमी से बहुत अधिक है, लेकिन इसमें कुछ भी गलत नहीं है। यदि आप एक स्थिर इंडेक्स फ़ाइल की सेवा करना चाहते हैं तो संभवतः आपने तय किया है कि * एक सामान्य लेआउट नहीं है, और इस तरह से 'index.html' की सेवा न करने का बिल्कुल कोई कारण नहीं है। – meagar

+1

@ मीगर पूरी तरह से। असल में, आईएमओ यह _shared layout_ (एमवीसी) और _quick प्रतिक्रिया_ (स्थिर फाइलें) के बीच एक विकल्प है। रेल दोनों रेल लचीलापन की सुंदरता दोनों का समर्थन करता है। (एमवीसी मामले में मैं अभी भी कुछ साझा साझा रखने के लिए सीएसएस का उपयोग कर सकता हूं।) –

3

मार्ग फ़ाइल:

 root 'main#index' 

नियंत्रक:

 class MainController < ApplicationController 
     def index 
     redirect_to '/index.html' 
     end 
    end 

और का उपयोग कर रेल 4 नियंत्रक कार्रवाई रहते इस वी

पर एक मोड़ के साथ एम & सी का उपयोग कर एक ही पृष्ठ आवेदन की तरह व्यवहार कर सकते हैं
+0

आपको वास्तव में 'डीफ इंडेक्स' एक्शन को परिभाषित करने की भी आवश्यकता नहीं है। केवल नियंत्रक और अनुक्रमणिका फ़ाइल को परिभाषित करना पर्याप्त है। यदि रेल नहीं मिला है तो रेल मार्ग में कार्रवाई को छोड़ देंगे। – LessQuesar

6

नियंत्रक

redirect_to root_path (will redirect to root '/') 
पर
संबंधित मुद्दे

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