我正在寻找一个好的RoR表生成器(或一个简单的解决方案),它可以让我在一个表中找到我的记录(未经校正但严格的严格XHTML)。
假设我有一个用户模型和一个地址模型: - 用户可以拥有多个地址 - 一个地址也链接为“primary_address”
假设我的用户控制器中有以下内容
def index
@users = User.find(:all,:order => 'id ASC')
@headers = ["id","First","Last","City","State"]
@fields = [:id,:firstname,:lastname,:primary_address.city,:primary_address.state]
end
我不知道字段数组是否可行,但我认为它可以解决问题。有没有人知道一个好的宝石,插件或技术,所以我不必在我的所有表格视图上“重复自己”?
答案 0 :(得分:6)
@ChrisH:使用两个数组表示表将不会提供更多控制。我建议如下:table_helper
erb代码段 -
collection_table(@posts, {}, :id => 'posts', :class => 'summary') do |header, body|
header.column :title
header.column :category
header.column :author
header.column :publish_date, 'Date< br \>Published'
header.column :num_comments, '# Comments'
header.column :num_trackbacks, '# Trackbacks'
body.alternate = true
body.build do |row, post, index|
row.category post.category.name
row.author post.author.name
row.publish_date time_ago_in_words(post.published_on)
row.num_comments post.comments.empty? ? '-' : post.comments.size
row.num_trackbacks post.trackbacks.empty? ? '-' : post.trackbacks.size
end
end
答案 1 :(得分:3)
你可以使用帮手制作一个吗?
def table_generator(collection, header_names, fields)
return false unless collection.any?
content_tag(:table, :class => "generic-table") do
content_tag(:thead) do
content_tag(:tr) do
header_names.each do |name|
content_tag(:td, name)
end
end
end
content_tag(:tbody) do
collection.each do |col|
content_tag(:tr) do
field_names.each do |name|
content_tag(:td, col.send(name))
end
end
end
end
end
end
谨慎使用!未经测试。
答案 2 :(得分:2)
这是我在相同情况下最终使用的那个:
答案 3 :(得分:2)
尝试使用Datagrid - ruby库,它可以帮助您构建和表示类似于表的数据:
答案 4 :(得分:1)
我最近在GitHub上开了一个项目,试一试: https://github.com/cthulhu666/easy_table