我正在构建一个显示数据库中所有表的管理页面。我想在不对列名进行硬编码的情况下这样做。现在,我在我的 View 中对值进行硬编码,以便它显示数据库表中的值。我怎样才能从数据库中提取列名而不必对列名进行硬编码并以表格格式打印它们。这样即使我有 10 个表,我也可以只调用表并打印提取信息的列名。
代码如下:
型号:
class Product < ActiveRecord::Base
end
Controller :
class AdminController < ApplicationController
def index
@products = Products.all
end
end
查看:
<h3 class="sub-header">Product</h3>
<table border='1' class="table table-striped" width="200">
<tr class="success">
<th>ID</th>
<th>url</th>
<th>url id</th>
<th>price id</th>
</tr>
<% @products.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.url %></td>
<td><%= user.url_id %></td>
<td><%= user.price_id %></td>
</tr>
<% end %>
</table>
最佳答案
您可以使用 #column_names
获取模型的列名像这样:
<% User.column_names.each do |column| %>
<%= column %>
<% end %>
您可以使用 #attributes
访问对象的属性,像这样:
<% user.attributes.each do |name, value| %>
<%= "#{name} : #{value}" %>
<% end %>
因此,以下代码段将满足您的目的:
<h3 class="sub-header">Product</h3>
<table border='1' class="table table-striped" width="200">
<tr class="success">
<% Doctor.column_names.each do |c| %>
<th><%= c.upcase %></th>
<% end %>
</tr>
<% @products.each do |user| %>
<tr>
<% user.attributes.each do |name, value| %>
<td><%= value %></td>
<% end %>
</tr>
<% end %>
</table>
关于ruby-on-rails - 无需硬编码即可动态提取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29610070/