मैं गतिशील टैब निर्माण के लिए सरल टैब सहायक बनाने के लिए नहीं चाहता। रेल सहायक के लिए 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()
यद्यपि उपज द्वारा लौटाए गए मूल्य पर