Ruby on rails 将父id传递到select选项的哈希中
我有一个方法,它从DELIVERYCOST数据库中获取两列,并将列“title”分组到分组“timing”下。它把它变成了一个杂凑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
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?!你说得对,我的错。我已经用一个可能的解决方案更新了答案。让我知道这有帮助。