Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 Rails实例变量nil仅在计数时可用_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails实例变量nil仅在计数时可用

Ruby on rails Rails实例变量nil仅在计数时可用,ruby-on-rails,Ruby On Rails,我有一个带有列的表ticketlines: ID, TICKET, PRODUCT, REASON, UNITS, PRICE 管制员票务线: @q = Ticketline.joins(:product, :ticket).group(:PRODUCT).select("PRODUCT, products.CONSIGNOR, SUM(UNITS) AS TOTALUNITS").ransack(params[:q]) @product_sales = @q.result.pagin

我有一个带有列的表
ticketlines

ID, TICKET, PRODUCT, REASON, UNITS, PRICE
管制员票务线:

  @q = Ticketline.joins(:product, :ticket).group(:PRODUCT).select("PRODUCT, products.CONSIGNOR, SUM(UNITS) AS TOTALUNITS").ransack(params[:q])
  @product_sales = @q.result.paginate(:page => params[:page], :per_page => 30)
在我看来,我想显示
@product\u sales.count

将生成一个查询:

SELECT COUNT(*) AS count_all, `ticketlines`.`PRODUCT` AS ticketlines_product FROM `ticketlines` INNER JOIN `products` ON `products`.`ID` = `ticketlines`.`PRODUCT` INNER JOIN `tickets` ON `tickets`.`ID` = `ticketlines`.`TICKET` GROUP BY `ticketlines`.`PRODUCT`
它显示@product_sales的结果数

问题是当我试图用ransack过滤结果时

Products表有列
ID、名称、类别、发货人

如果我按产品筛选票证行,它会起作用。如果我按类别或发货人筛选,则不会

例如,如果我在点击
@product\u sales.count
时按类别进行筛选,则生成查询:

SELECT COUNT(DISTINCT ) AS count, `ticketlines`.`PRODUCT` AS ticketlines_product FROM `ticketlines` INNER JOIN `products` ON `products`.`ID` = `ticketlines`.`PRODUCT` INNER JOIN `tickets` ON `tickets`.`ID` = `ticketlines`.`TICKET` LEFT OUTER JOIN `categories` ON `categories`.`ID` = `products`.`CATEGORY` WHERE `categories`.`ID` = '289108c2-6be3-4baf-b053-96f70dc2cc5a' GROUP BY `ticketlines`.`PRODUCT`
对我来说没有意义的是,如果我从view@product\u sales.count中删除,就没有错误。我可以使用类别过滤器,它的工作

执行的查询是:

SELECT  PRODUCT, SUM(UNITS) AS TOTALUNITS FROM `ticketlines` INNER JOIN `products` ON `products`.`ID` = `ticketlines`.`PRODUCT` INNER JOIN `tickets` ON `tickets`.`ID` = `ticketlines`.`TICKET` LEFT OUTER JOIN `categories` ON `categories`.`ID` = `products`.`CATEGORY` WHERE `categories`.`ID` = '289108c2-6be3-4baf-b053-96f70dc2cc5a' GROUP BY `ticketlines`.`PRODUCT` LIMIT 30 OFFSET 0
只有使用计数时,@product\U sales才为零的原因是什么