我想在我的红宝石中创建辅助方法来制作一个像这样的表:
<table>
<legend>Test Table</legend>
<thead>
<th>name</th>
<th>age</th>
<th>occupation</th>
</thead>
<tbody>
<tr><td>Josh</td><td>32</td><td>Ditch Digger</td></tr>
<tr><td>John</td><td>54</td><td>Burger Flipper</td></tr>
<tr><td>Jake</td><td>21</td><td>Couch Potato</td></tr>
</tbody>
</table>
我的数据是红宝石哈希,看起来像这样:
root
users
{'name'=>'Josh', 'age'=>'32','job'=>'Ditch Digger'},
{'name'=>'John', 'age'=>'54','job'=>'Burger Flipper'},
{'name'=>'Jake', 'age'=>'21','job'=>'Couch Potato'}
尝试创建该表的函数
def data_table_personnel(source)
if subdata = source&.dig('root', 'users')
h.content_tag :table do
h.content_tag :tr do
h.content_tag :td subdata.name
h.content_tag :td subdata.age
h.content_tag :td subdata.job
end
end
end
end
end
我在项目中制作了很多表格,因此,如果可能的话,我想避免使用ERB。
答案 0 :(得分:1)
def data_table_personnel(source)
users = source&.dig('root', 'users')
return if users.blank?
h.content_tag :table do
users.map do |user|
# generate '<tr>' for each user
h.content_tag :tr do
[:name, :age, :job].map do |attr|
# generate '<td>' for each user attribute
h.content_tag :td user[attr]
end.join # join <td>s
end
end.join # join <tr>s
end
end