zdefiniowałem funkcję pomocnika Zastosowanie:szyny, Jak zbudować tabelę w helper za pomocą content_tag?
def display_standard_table(columns, collection = {})
content_tag :table do
concat content_tag :thead do
content_tag :tr do
concat columns.collect { |column| content_tag(:td, column[:display_name]) }
end
end
concat content_tag :tbody do
collection.collect { |elem|
concat content_tag(:tr, columns.collect { |column|
content_tag(:td, elem.attributes[column[:name]])
})
}
end
end
end
i ja to nazywam moim zdaniem:
<%= display_standard_table(
[
{ :name => 'id', :display_name => 'Id' },
{ :name => 'login', :display_name => 'Login' },
{ :name => 'first_name', :display_name => 'Name' },
{ :name => 'last_name', :display_name => 'LastName' },
{ :name => 'email', :display_name => 'Email'}
], @users) %>
Wyjście w html jest:
<table><thead></thead><tbody></tbody></table>
i powinno być:
<table><thead><tr><td>Id</td><td>Login</td>...</tr></thead><tbody><tr>row here</tr></tbody></table>
i nie mogę określić, czego brakuje. (. Btw używam rails3)
[EDIT]
def display_standard_table(columns, collection = {})
content_tag(:table) do
concat(content_tag(:thead) do
concat(content_tag(:tr) do
concat(columns.collect { |column| content_tag(:td, column[:display_name]) })
end)
end)
concat(content_tag(:tbody) do
concat(collection.collect { |elem|
content_tag(:tr, columns.collect { |column|
content_tag(:td, elem.attributes[column[:name]])
})
})
end)
end
end
Powyższa wersja działa ok, ale jest generowany html uciekł:/zgodnie z ciągów dokumentacja sporządzona przez content_tag powinny być html_safe, ale są uciekł:/
Kiedy usunąć concat w ogóle daje mi to: