提取hstore键并将其放入数据表

时间:2016-02-12 03:19:05

标签: ruby-on-rails datatable hstore

我目前正在尝试构建一个表,以便在不同的列中显示具有其属性的用户列表。 它类似于:

user1 | user1电子邮件| user1管理员角色| user1组织者角色

user2 | user2电子邮件| user2管理员角色| user2组织者角色

user3 | user3电子邮件| user3管理员角色| user3组织者角色

但是,admin和organizer属性存储在名为activities的hstore列中。

当我构建数据表时,浏览器会返回此错误

  

DataTables警告:table id = DataTables_Table_0 - 请求未知   参数' activities.organiser'对于第0行。有关的更多信息   此错误,请参阅http://datatables.net/tn/4

这是我构建表列的代码 在manage_user_controller.rb

 private

 def load_columns
  columns = []
  columns << {:data => "id", :title => "ID"}
  columns << {:data => "email", :title => "Email"}
  columns << {:data => "created_at", :title => "Created"}
  columns << {:data => 'activities.organiser', :title => "Organiser Role"}
  columns << {:data => 'activities.admin', :title => "Admin Role"}
  columns << {:data => "id", :title => ""}
  return columns
 end

在我的users_datatable.rb

private

 def data
  results = []
  users.each_with_index do |user, index|
   cols = {"id" => "#{user.id}"}
   cols.merge!("email" => "#{user.email}")
   cols.merge!("created_at" => "#{user.created_at}")
   cols.merge!("activities" => "#{user.activities.organiser}")
   cols.merge!("activities" => "#{user.activities.admin}")
   #cols.merge!("activities" => "#{user.activities.admin_events}")
   results << cols
  end
  return results
 end

我试图改变&#34; activities.organiser&#34;到&#34;活动&#34;在控制器中,它会加载一些值,但我不能使用激活对活动本身的所有子属性,因为这将是错误的。

那么,我应该如何使用hstore列中的键值对正确填充数据表?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

好吧,我设法解决它。

<_>在manage_users_controller.rb

 def load_columns
  columns = []
  columns << {:data => "id", :title => "ID"}
  columns << {:data => "email", :title => "Email"}
  columns << {:data => "created_at", :title => "Created"}
  columns << {:data => "organiser", :title => "Organiser Role"}
  columns << {:data => "admin", :title => "Admin Role"}
  columns << {:data => "id", :title => ""}
  return columns
 end

在user_datatable.rb

def data
  results = []
  users.each_with_index do |user, index|
   cols = {"id" => "#{user.id}"}
   cols.merge!("email" => "#{user.email}")
   cols.merge!("created_at" => "#{user.created_at}")
   cols.merge!("organiser" => "#{user.activities.organiser}")
   cols.merge!("admin" => "#{user.activities.admin}")
   #cols.merge!("activities" => "#{user.activities.admin_events}")
   results << cols
  end
  return results
 end

两个文件中的名称必须相同。