/ / rubín / koľajnice blok obsah problém - rubín, blok

rubín / koľajnice blok obsah problém - rubín, blok

Nebudem vytvárať jednoduché pomocné karty na vytváranie dynamických kariet. Niečo ako pomocná pomocná lišta.

Tu čo teraz mám (zjednodušené napríklad):

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

v pohľade

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

Všetko funguje dobre, s výnimkou obsahu pre karty je nejako pripojený takto:

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

Ja som nový a rubínové bloky je niečo, čo nemám veľa skúseností.

Môže mi niekto vysvetliť, čo sa tu deje a ako zachytiť obsah bloku kariet?

Používanie rubínov 1.9.2

Vďaka

UPDATE

Skúsim to z rubínov:

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

koniec funguje podľa očakávania. Problém / chyba je v pohľade na koľajnice / erb bloky .. Môže mi niekto s tým pomôcť?

Vďaka

odpovede:

1 pre odpoveď č. 1

Ak sa pozriete pozorne na vaše bloky, mali by ste vidieť, že všetky tie postavy, ktoré sú zachytené, sú tu.

Toto možno osloviť niekoľkými spôsobmi, tu je jedna:

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

Myslím, že to len odstráni prvú novú líniu:

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

Osobne pravdepodobne volám strip() na hodnotu vrátenú výnosom