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