我试图在Rails中创建用户定义的视图。
每个视图都有uview
条记录。它包含一个名为ufields
的hstore字段。在ufields
中,我存储了要在表格视图中使用的列的名称。
我可以像这样创建表格thead
:
<thead>
<tr>
<% uview.ufields.each do |key, val| %>
<th><%= key %></th>
<% end %>
</tr>
</thead>
但是,如何定义tbody
的字段。
这不起作用:
<tr>
<% uview.ufields.each do |key, val| %>
<% ufield = "vehicle." + key %>
<td><%= ufield %></td>
<% end %>
</tr>
只会输出像vehicle.name
这样的行。
有没有办法让这种情况发生? <td><%= vehicle.name %>
这不起作用,但可能会让您了解我尝试做的事情:
<td><%= <%= ufield %> %></td>
答案 0 :(得分:0)
尝试:
<% uview.ufields.each do |key, val| %>
<td><%= vehicle[key] %></td>
<% end %>
实际上你很想做:
vehicle.send key
vehicle.public_send key
但是,由于您信任用户的输入,您将面临严重的缺陷
另一种选择是车辆类:
WHITELISTED_USER_ATTRS = %w(name id) #add what you need but not stuff like destroy etc...
def user_input(key)
if WHITELISTED_USER_ATTRS.include?(key.to_s)
vehicle.send key
else
""
end
end
然后在视图中:
<% uview.ufields.each do |key, val| %>
<td><%= vehicle.user_input(key) %></td>
<% end %>