Rails用户定义的视图

时间:2014-09-23 20:34:27

标签: ruby-on-rails

我试图在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>

1 个答案:

答案 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 %>