/ / рубін / рейки блокувати вміст проблеми - рубін, блок

ruby / rails блокувати вміст проблеми - рубій, блок

Я не буду створювати прості вкладки вкладки для створення динамічних вкладок. Щось на зразок form_for helmet.

Ось що я маю (спрощений, наприклад):

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

Дякую

UPDATE

Я намагаю це з рубіна:

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() на величину, яку повернув прибутковість, хоча