如何让用户选择Rails中显示的列?

时间:2015-06-16 14:20:40

标签: ruby-on-rails ruby-on-rails-4

我有一个名为Employee的模型,它有十几个字段,因此一次显示所有字段是不切实际的。我想允许用户通过使用多个选择框或复选框列表来选择显示哪些列,其结果理想地存储在内存中,而不是存储在模型中,因为没有任何内容可以长期保存,并且可访问循环以显示适当的列。

视图的示例可能如此:

<% for employee in @employees %>
  <tr>
    <% for col in col_list %>
      <td><%= employee.col %></td>
    <% end %>
  </tr>
<% end %>

其中col_list是用户选择的列列表。

2 个答案:

答案 0 :(得分:1)

如上所述,此功能没有什么特别复杂的。

如果您的用户已在某处登录,则可以在某个位置为用户存储列表的序列化列表。列表列表可能应该进行清理,以避免显示私有列。

如果用户未登录,或者您想要一种不太持久的方法,只需将列表存储在cookie中即可。

如果未设置列表(也就是cookie为空),请将其设置为默认值或只显示默认的属性列表。

答案 1 :(得分:1)

更好的方法可能是输出服务器端的所有列,并在客户端使用javascript进行过滤。有几个库,例如jQuery Datatables

如果您想记住用户首选项,可以将其与persisted to the sessionRedis的首选项模型结合使用,而不是主要的RDBMS。

(是的,你可以使用未存储在数据库中的对象的模型。它为你提供了所有的验证,表单和参数绑定等功能。)