/ / रूबी / रेल ब्लॉक सामग्री समस्या - रूबी, ब्लॉक

रूबी / रेल ब्लॉक सामग्री समस्या - रूबी, ब्लॉक

मैं गतिशील टैब निर्माण के लिए सरल टैब सहायक बनाने के लिए नहीं चाहता। रेल सहायक के लिए form_ की तरह कुछ।

यहां मेरे पास अभी क्या है (उदाहरण के लिए सरलीकृत):

class Tabs

attr_reader :tabs, :type, :subtype, :args

def initialize(*args)

@tabs    = []
@type    = args[0] || "horizontal"
@subtype = args[1] || "basic"
@args    = args.extract_options!
end


def tab(*args, &block)
tab          ={}
tab[:name]   =args[0]
tab[:content]= capture(&block)
#same thing with with_output_buffer(&block)
args         = args.extract_options!
tab          = args.merge(tab)
@tabs << tab

end


end



def tabs_navigation(*args, & block)
tabs_constructor = Tabs.new(args)
capture(tabs_constructor, & block)

#iteration of tabs hash array and building tabs structure goes here
#tabs_constructor.tabs.each bla,bla

end

दृश्य में

 <%= tabs_navigation do |tabs| %>
<% tabs.tab :tab1 do %>
tab1
<% end %>
<% tabs.tab :tab2 do %>
tab2
<% end %>
<% tabs.tab :tab3 do %>
tab3
<% end %>
<% end %>

सब कुछ ठीक काम करता है, टैब के लिए सामग्री को छोड़कर किसी भी तरह इस तरह शामिल हो गया है:

content for tab1 is: :content=>"n            tab1n"
content for tab2 is: :content=>"n            tab1n            tab2n"
content for tab3 is: :content=>"n            tab1n            tab2n            tab3n"

मैं नया हूं और रूबी ब्लॉक कुछ ऐसा है जो मैं ज्यादा अनुभवों के लिए नहीं करता हूं।

क्या कोई मुझे समझा सकता है, यहां क्या हो रहा है और टैब ब्लॉक की सामग्री कैसे पकड़ें?

रूबी 1.9.2 का उपयोग करना

धन्यवाद

अद्यतन करें

मैं इसे रूबी से आज़माता हूं:

class Foo
attr_reader :arr
def initialize
@arr = []
end

def bar
hash = {}
hash[:content] = yield
@arr << hash
end
end

def FooBars
foo = Foo.new
yield foo
puts foo.arr
end


FooBars do |fo|
fo.bar do
"bar1"
end
fo.bar do
"bar2"
end
end

अंत में यह उम्मीद के रूप में काम करता है। समस्या / बग रेल दृश्य / erb ब्लॉक में है .. क्या कोई मेरी इसके साथ मदद कर सकता है?

धन्यवाद

उत्तर:

उत्तर № 1 के लिए 1

यदि आप अपने ब्लॉक पर बारीकी से देखते हैं तो आपको देखना चाहिए कि उन सभी पात्रों को पकड़ा जा रहा है।

इसे कुछ तरीकों से संपर्क किया जा सकता है, यहां एक है:

<%= tabs_navigation do |tabs| %>
<% tabs.tab :tab1 do %>tab1<% end %>
<% tabs.tab :tab2 do %>tab2<% end %>
<% tabs.tab :tab3 do %>tab3<% end %>
<% end %>

मुझे लगता है कि यह केवल पहली नई लाइन को पट्टी करेगा:

<%= tabs_navigation do |tabs| %>
<% tabs.tab :tab1 do -%>
tab1
<% end %>
<% tabs.tab :tab2 do -%>
tab2
<% end %>
<% tabs.tab :tab3 do -%>
tab3
<% end %>
<% end %>

व्यक्तिगत रूप से, मैं शायद बस कॉल करूँगा strip() यद्यपि उपज द्वारा लौटाए गए मूल्य पर