我试图在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>发布于 2014-09-23 20:49:01
尝试:
<% 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 %>https://stackoverflow.com/questions/26004277
复制相似问题