Ruby on rails 将父id传递到select选项的哈希中

Ruby on rails 将父id传递到select选项的哈希中,ruby-on-rails,ruby,forms,hash,Ruby On Rails,Ruby,Forms,Hash,我有一个方法,它从DELIVERYCOST数据库中获取两列,并将列“title”分组到分组“timing”下。它把它变成了一个杂凑 def self.titles_by_timing self.pluck(:id, :timing, :title).group_by(&:first).each { |_, v| v.map!(&:last) } end DeliveryCost.titles_by_timing => {"Install"=>["Lu

我有一个方法,它从DELIVERYCOST数据库中获取两列,并将列“title”分组到分组“timing”下。它把它变成了一个杂凑

  def self.titles_by_timing
    self.pluck(:id, :timing, :title).group_by(&:first).each { |_, v| v.map!(&:last) }
  end

DeliveryCost.titles_by_timing
=> {"Install"=>["Luton Day (7am - 7pm)", "LWB Day (7am - 7pm)", "Luton Overtime (7pm - 7am)", "LWB Overtime", "Helper Day (7am - 7pm)", "Helper Overtime"], "Breakdown"=>["Luton Day (7am - 7pm)", "LWB Overtime", "Luton Overtime (7pm - 7am)", "Helper Day (7am - 7pm)", "Helper Overtime"], "Fuel"=>["Congestion Charge", "Fuel in London Zone 1-2", "Fuel in London Zone 3-4", "Fuel By Milege (Out of M25)]}
这是表格中的作业交付成本部分

= f.select :delivery_cost_id, option_groups_from_collection_for_select(DeliveryCost.titles_by_timing, :timing, :title, :id) 
因为作业交付成本属于交付成本,并且交付成本有许多作业交付成本,所以我需要传递id,以便在创建作业交付成本实例时创建关联。然而,我有很大的困难,在这样做。我如何做到这一点,我是否扩展了我当前的方法

非常感谢您的帮助

似乎DeliveryCost.titles\u by\u timing已经完成了所有繁重的工作,因此您应该为\u select使用分组的\u选项,而不是为\u select使用\u集合中的选项\u组

检查

更新:

尝试将以下选项与分组的\u选项\u一起用于\u选择:

def self.titles_by_定时 self.all.each_with_objectHash.new[]do | delivery_cost,分组| 分组的[delivery_cost.title]|=[[delivery_cost.id,delivery_cost.Time]] 终止 终止
请注意,由于将所有对象加载到内存中,此方法的性能可能会很差。如果这是一个问题,你可以尝试缓存、记忆或将昂贵的查询委托给数据库。

是的,但我不能传递id?!你说得对,我的错。我已经用一个可能的解决方案更新了答案。让我知道这有帮助。