2011-09-06 12 views
6

मैं रूबी 3.0.10 पर रूबी का उपयोग कर रहा हूं और मैं कुछ पैरामीटर को डिफ़ॉल्ट प्रतिपादन विधि में पास करना चाहता हूं। यही कारण है, अगर मैं की तरहडिफ़ॉल्ट प्रतिपादन विधि में कुछ पैरामीटर कैसे पास करें?

def show 
    ... 

    respond_to do |format| 
    format.html # This, by default, renders the 'show.html.erb' file 
    end 
end 

एक कोड है मैं शायद की तरह, कुछ पैरामीटर भेजने चाहते हैं (ध्यान दें: निम्नलिखित काम नहीं करता है)

def show 
    ... 

    respond_to do |format| 
    # Here I would like to add some local objects that will be available in the 'show.html.erb' template file 
    format.html { render ..., :locals => { :content => { :value => 'Sample value' } } } 
    end 
end 
तो

कि show.html.erb टेम्पलेट में मैं की तरह कुछ कर सकते हैं:

<%= 
    content[:value] 
    # => 'Sample value' 
%> 

कुछ शब्दों में, मैं उसी तरह से पैरामीटर मान पारित करने के लिए चाहते हैं के रूप में आंशिक टेम्पलेटसे संबंधित प्रतिपादन के लिए बनायाकुंजी:

render :partial, 
     :locals => { 
      :content => { :value => 'Sample value' } 
     } 

मैं ऐसा कैसे कर सकता है?

उत्तर

6

आप जो भी वर्णन करते हैं वह ठीक कर सकते हैं। मैंने इसे "टेम्प्लेट प्रस्तुत करना" शीर्षक के तहत http://apidock.com/rails/ActionController/Base/render पर देखा और इसे स्वयं एक भंवर दिया। आप हर दिन कुछ नया सीखते हैं।

आप बस

def show 
    respond_to do |format| 
    format.html { render :locals => { :content => { :value => 'Sample value' } } } 
    end 
end 

कर सकते हैं मैं विचार करेंगे क्यों आप के बजाय उदाहरण चर का उपयोग कर के ऐसा करने की जरूरत है। शायद एक बेहतर दृष्टिकोण है।

3

इंस्टेंस चर सेट करने के बारे में कैसे?

# your_controller.rb 

def show 
    @content_value = ... 
end 

 

# show.html.erb 

<%= @content_value %> 
+0

मुझे लगता है कि प्रश्न में वर्णित दृष्टिकोण (शायद) आपके द्वारा प्रस्तावित प्रस्ताव से बेहतर है ... जैसा कि आपने प्रस्तावित किया है, ऐसा करने का कोई कारण है? आप किस बारे में सलाह देते हैं? – Backo

1
आमतौर पर

जब हम कार्रवाई show.html.erb साथ काम कर रहे बल्कि एक partial दृश्य के अलावा, हम उदाहरण चर के माध्यम से मानकों नियंत्रक पर इस तरह के

के रूप में गुजर रहे एक action दृश्य है
def show 
    ... 
    @foo = "bar" 
    respond_to do |format| 
    format.html 
    end 
end 

अब app/views/foos/show.html.erb फ़ाइल में, हमारे पास @foo तक पहुंच है।

इसका कारण यह है कि यह जानता है @foo प्रकार Foo की है डिफ़ॉल्ट रूप से प्रस्तुत करना होगा आंशिक app/views/foos/_foo.html.erb:

जब आंशिक प्रतिपादन, वहाँ पैरामीटर पास करने के कुछ तरीके हैं। इसमें, आपके पास स्वचालित रूप से foo वैरिएबल तक पहुंच होगी।

<%= render @foo %> 

यहाँ हम app/views/foos/_foo_details.html.erb प्रस्तुत करना, और एक वस्तु में पारित करेंगे। ऑब्जेक्ट आंशिक का नाम लेता है, इसलिए _foo_details.html.erb के अंदर हमारे पास नामक चर के लिए पहुंच होगी।

<%= render :partial => "foo_details", :object => @foo %> 

अंत में, और ज्यादातर अपने प्रश्न से संबंधित है, हम एक आंशिक _foo_things.html.erb कहा जाता है प्रस्तुत करना है और यह कुछ स्थानीय लोगों के पास भेज देंगे। इस मामले में, आपको title नामक एक स्थानीय चर मिलेगा जिसके साथ आप काम कर सकते हैं।

<%= render :partial => "foo_things", :locals => {:title=> "Test 123"} %> 

मुझे आशा है कि आपके प्रश्न का उत्तर दें।

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