5

रेल में स्थिर HTML दस्तावेज़ों को लेआउट के साथ सेवा करने का सबसे अच्छा तरीका क्या है? जाहिर है, मैं सिर्फ HTML फ़ाइलों को public/ निर्देशिका में रख सकता हूं, लेकिन फिर मैं एक लेआउट लागू करने में सक्षम नहीं होगा, या मैं कर सकता हूं? अन्यथा मैं config/routes.rb में निम्नलिखित डाल सकता है:एक लेआउट फ़ाइल के साथ रेल में स्थिर HTML की सेवा

match ':page' => 'static#display', :page => /.+\.html/ 

तो यह .html साथ समाप्त होता है .+\.html काम करता है?

class StaticController < ApplicationController 
    layout 'static_files' 
    def display 
    render params[:page] 
    end 
end 

यह मानते हुए कि ठीक से काम करता है, एक ERB फाइल के रूप में रूबी अनावश्यक रूप से कोशिश करते हैं और एचटीएमएल फ़ाइल को पार्स होगा: वैसे भी, यह सोचते हैं यह किया, मुझे लगता है मैं एक नियंत्रक होगा लगता है? क्या इसके लिए एक बेहतर तंत्र रेल है?

+0

जो मैं समझता हूं उससे ऐसा लगता है कि रेल ''एचटीएमएल' फाइलों को 'ईआरबी' के माध्यम से '.html' फ़ाइलों के माध्यम से पार्स करेगा यदि फाइलें' .html.erb' एक्सटेंशन हैं। – knownasilya

उत्तर

2

आप थॉटबॉट द्वारा high_voltage gem का उपयोग कर सकते हैं। इसका उद्देश्य रेल में स्थिर पृष्ठों को शामिल करना है, और आप अपनी पसंद की किसी भी टेम्पलेटिंग भाषा का उपयोग करते हैं। आंतरिक रूप से यह यहां प्रस्तावित समाधानों के समान ही काम करता है।

आप रीडमे में here वर्णित उच्च_वॉल्टेज द्वारा प्रदत्त प्रत्येक पृष्ठ के लिए लेआउट फ़ाइल को कस्टमाइज़ कर सकते हैं।

+0

यह अब कोशिश कर रहा है, यह सही दिखता है। –

5

यह tutorial रेल में स्थिर पृष्ठों का एक बहुत अच्छा स्पष्टीकरण है।

सबसे पहले आप रेल जनरेटर के माध्यम से स्थैतिक पृष्ठों उत्पन्न कर सकते हैं:

rails generate controller StaticPages home help --no-test-framework 

तो फिर आप अपने config/routes.rb संपादित कर सकते हैं की तरह लग रहे करने के लिए निम्न:

SampleApp::Application.routes.draw do 
    root to: 'static_pages#home' 
    match '/help', to: 'static_pages#help' 
    . 
    . 
    . 
end 

और अंत में अपने StaticPages नियंत्रक में आपके द्वारा बनाए गए home और help विधियां।

class StaticPagesController < ApplicationController 
    def home 
    end 

    def help 
    end 
end 

अद्यतन - quote source: Ruby on Rails Guides - Section 2.1

आप सुना है कि रेल को बढ़ावा देता है "सम्मेलन विन्यास पर"। डिफ़ॉल्ट प्रतिपादन इसका एक उत्कृष्ट उदाहरण है। डिफ़ॉल्ट रूप से, रेल में नियंत्रक स्वचालित रूप से नामों के साथ विचार प्रस्तुत करते हैं जो मान्य मार्गों के अनुरूप हैं। उदाहरण के लिए, अगर आप अपने BooksController कक्षा में इस कोड है:

class BooksController < ApplicationController 
    #empty controller 
end 

और अपने मार्गों फ़ाइल में निम्न:

resources :books 

और अगर आप एक दृश्य फ़ाइल app/views/books/index.html.erb है, तो रेल होगा तरीकों के बिना भी इसे प्रस्तुत करें। यह किसी भी मैप किए गए मार्ग/समकक्ष दृश्यों के लिए काम करना चाहिए।

+3

मैं अपने 85 स्थैतिक HTML पृष्ठों के लिए पेज नियंत्रक में 85 विधियां नहीं बनाना चाहता हूं। ऊपर दिए गए मेरे उदाहरण की तरह, मैं चाहता हूं कि एक पकड़-सब मार्ग अधिकतर एक नियंत्रक कार्रवाई पर जा रहा हो। –

+0

मैंने अपना जवाब अपडेट किया। कोशिश करो। – knownasilya

0

स्थैतिक पृष्ठों

routes.rb

match '/home' => 'pages#home' 
match '/help' => 'pages#help' 
match '/contact' => 'pages#contact' 

में इन कार्यों को

rails generate controller pages 

मानचित्र मार्गों से निपटने के लिए एक नियंत्रक बनाएं पृष्ठों नियंत्रक में कार्रवाई

def home 
CODE 
end 

def contact 
CODE 
end 

def help 
CODE 
end 

डिफ़ॉल्ट रूप से, रेल बनाएं दृश्य फ़ोल्डर में ACTION.html.erb की तलाश करेगा। विचार और voila बनाएँ। अगर यह आपके काम का है, तो मुझे बताएं।

+1

मैं अपने 85 स्थैतिक HTML पृष्ठों के लिए पेज नियंत्रक में 85 विधियां नहीं बनाना चाहता हूं। ऊपर दिए गए मेरे उदाहरण की तरह, मैं चाहता हूं कि एक पकड़-सब मार्ग अधिकतर एक नियंत्रक कार्रवाई पर जा रहा हो। –