gpt4 book ai didi

ruby-on-rails - rails,如何使用content_tag在助手中建立表?

转载 作者:行者123 更新时间:2023-12-03 13:21:48 28 4
gpt4 key购买 nike

我在应用程序助手中定义了函数:

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


我称之为:

<%= 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) %>


html中的输出为:

<table><thead></thead><tbody></tbody></table>


它应该是:

<table><thead><tr><td>Id</td><td>Login</td>...</tr></thead><tbody><tr>row here</tr></tbody></table>


而且我不知道丢失了什么。 (顺便说一句,我正在使用rails3)

[编辑]

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


上面的版本可以正常工作,但是生成的html被转义了://根据content_tag生成的文档字符串,应该是html_safe,但是它们被转义了:

最佳答案

def display_standard_table(columns, collection = {})

thead = content_tag :thead do
content_tag :tr do
columns.collect {|column| concat content_tag(:th,column[:display_name])}.join().html_safe
end
end

tbody = content_tag :tbody do
collection.collect { |elem|
content_tag :tr do
columns.collect { |column|
concat content_tag(:td, elem.attributes[column[:name]])
}.to_s.html_safe
end

}.join().html_safe
end

content_tag :table, thead.concat(tbody)

end

关于ruby-on-rails - rails,如何使用content_tag在助手中建立表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3863844/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com