Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 按“所属对象”关系中的父项订购“活动管理”列_Ruby On Rails_Ruby_Ruby On Rails 4_Activerecord_Activeadmin - Fatal编程技术网

Ruby on rails 按“所属对象”关系中的父项订购“活动管理”列

Ruby on rails 按“所属对象”关系中的父项订购“活动管理”列,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,activeadmin,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,Activeadmin,我有两种型号:show\u request和show。show\u请求属于show,而show有许多show\u请求。在active\u admin中的show\u request页面上,我想通过show的创建的值来订购show\u requests。以下是我目前的代码: ActiveAdmin.register ShowRequest do controller do def scoped_collection end_of_association_chain.inc

我有两种型号:
show\u request
show
show\u请求
属于
show
,而
show
有许多
show\u请求
。在active\u admin中的
show\u request
页面上,我想通过
show
创建的
值来订购
show\u requests
。以下是我目前的代码:

ActiveAdmin.register ShowRequest do

  controller do
    def scoped_collection
      end_of_association_chain.includes(:show)
      #I also tried ShowRequest.includes(:show)
    end
  end

  index do
    column 'Show', sortable: "shows.created_at_asc" do |show_req|
        link_to show_req.show.name, admin_show_path(show_req.show)
    end
  end

end
以下是服务器日志:

Started GET "/admin/show_requests" for 127.0.0.1 at 2015-09-18 09:35:36 -0400
Processing by Admin::ShowRequestsController#index as HTML
  AdminUser Load (0.3ms)  SELECT  "admin_users".* FROM "admin_users"  WHERE "admin_users"."id" = 1  ORDER BY "admin_users"."id" ASC LIMIT 1
   (1.2ms)  SELECT COUNT(*) FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't')
   (0.2ms)  SELECT COUNT(*) FROM "show_requests"
   (0.2ms)  SELECT COUNT(*) FROM "show_requests"  WHERE (not_going_to_show = 't' AND i_want_my_horse_to_compete = 'f')
   (0.3ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't') LIMIT 30 OFFSET 0) subquery_for_count
  CACHE (0.0ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't') LIMIT 30 OFFSET 0) subquery_for_count
  CACHE (0.0ms)  SELECT COUNT(*) FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't')
  CACHE (0.0ms)  SELECT COUNT(count_column) FROM (SELECT  1 AS count_column FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't') LIMIT 30 OFFSET 0) subquery_for_count
  ShowRequest Load (2.0ms)  SELECT  "show_requests".* FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't')  ORDER BY "show_requests"."id" desc LIMIT 30 OFFSET 0
  Show Load (9.7ms)  SELECT "shows".* FROM "shows"  WHERE "shows"."id" IN (2, 1)
  User Load (0.4ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = $1 LIMIT 1  [["id", 2]]
  User Load (0.2ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
  CACHE (0.0ms)  SELECT  "users".* FROM "users"  WHERE "users"."id" = $1 LIMIT 1  [["id", 1]]
  Show Load (0.2ms)  SELECT "shows".* FROM "shows"
  User Load (0.2ms)  SELECT "users".* FROM "users"

这是行不通的。这根本不会影响列的顺序。如何修复此问题?

查看日志的这一部分:

ShowRequest Load (2.0ms)  SELECT  "show_requests".* FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't')  ORDER BY "show_requests"."id" desc LIMIT 30 OFFSET 0
Show Load (9.7ms)  SELECT "shows".* FROM "shows"  WHERE "shows"."id" IN (2, 1)
您可以看到,
ShowRequest
s和
Show
s在单独的查询中加载
sortable
在这里不起作用,因为在没有联接的情况下,不能按一个表的字段对另一个表进行排序。修复方法应该是告诉ActiveRecord您需要在查询中引用
shows
表:

controller do
  def scoped_collection
    super.includes(:show).references(:shows)
  end
end

index do
  column :show, sortable: 'shows.created_at'
end

引用
仅适用于
包含
,并在加载时强制Rails执行连接

查看日志的这一部分:

ShowRequest Load (2.0ms)  SELECT  "show_requests".* FROM "show_requests"  WHERE (not_going_to_show = 'f' OR i_want_my_horse_to_compete = 't')  ORDER BY "show_requests"."id" desc LIMIT 30 OFFSET 0
Show Load (9.7ms)  SELECT "shows".* FROM "shows"  WHERE "shows"."id" IN (2, 1)
您可以看到,
ShowRequest
s和
Show
s在单独的查询中加载
sortable
在这里不起作用,因为在没有联接的情况下,不能按一个表的字段对另一个表进行排序。修复方法应该是告诉ActiveRecord您需要在查询中引用
shows
表:

controller do
  def scoped_collection
    super.includes(:show).references(:shows)
  end
end

index do
  column :show, sortable: 'shows.created_at'
end

引用
仅适用于
包含
,并在加载时强制Rails执行连接

阿萨,我试过了,但没用。没有任何更改。如果从可排序行中删除
\u asc
部分,会发生什么情况。更改如下
列'Show',可排序:“shows.created_at“do | Show|u req |
谢谢,尝试过,但也没有任何效果。有趣的是,无论我写什么,都没有效果。例如,如果我写
show.created_at_fdskjfsdlkj
则没有区别。hmmm根据文档关联排序,如果您添加此
super.includes:show
范围的_集合
操作中,在show列中执行此操作
列“show”,可排序:“show.created_at”
它应该可以工作,它只是试图从协会访问那个专栏。阿萨,我试过了,但什么也没做。没有任何更改。如果从可排序行中删除
\u asc
部分,会发生什么情况。更改如下
列'Show',可排序:“shows.created_at“do | Show|u req |
谢谢,尝试过,但也没有任何效果。有趣的是,无论我写什么,都没有效果。例如,如果我写
show.created_at_fdskjfsdlkj
则没有区别。hmmm根据文档关联排序,如果您添加此
super.includes:show
范围的_集合
操作中,在show列中执行此操作
列“show”,可排序:“show.created_at”
它应该可以工作,它只是试图从协会访问该专栏。谢谢?应该是:show还是:show?Includes与:show不兼容,因此我将其更改为:show。但是它仍然不会影响订单,虽然它正在更改服务器日志您是对的,它应该是
:show
,对于
包括
,但是仍然是
:show
,对于
引用
。它应该是
显示。在
处创建。对于references和sortable,您都引用了表名。感谢Ahmaclod,尝试了这个方法,但没有更改,只是服务器日志现在不同了。不过,它不允许我将日志放在评论中。上面说它们太长了。有没有别的办法把它们挂起来?谢谢?应该是:show还是:show?Includes与:show不兼容,因此我将其更改为:show。但是它仍然不会影响订单,虽然它正在更改服务器日志您是对的,它应该是
:show
,对于
包括
,但是仍然是
:show
,对于
引用
。它应该是
显示。在
处创建。对于references和sortable,您都引用了表名。感谢Ahmaclod,尝试了这个方法,但没有更改,只是服务器日志现在不同了。不过,它不允许我将日志放在评论中。上面说它们太长了。有没有别的办法把它们放上去?