Rails link_to可能嵌套的多态属性

时间:2015-09-17 10:17:20

标签: ruby-on-rails

我有一个地区>商店>设备层次结构,其中每个事物都可以具有config_set。

class Region < ActiveRecord::Base
  has_many :stores, dependent: :destroy
  has_one :config_set, as: :configurable
end

class Store < ActiveRecord::Base
  has_many :devices
  has_one :config_set, as: :configurable
  belongs_to :region
end

class Device < ActiveRecord::Base
  has_one :config_set, as: :configurable
  belongs_to :store
end

class ConfigSet < ActiveRecord::Base
  belongs_to :configurable, polymorphic: true
end

在config_set show页面中,我想生成指向config_set所属的configurable的链接。 link_to在内部使用polymorphic_url,需要@device[@store, @device][@region, @store, @device]。有没有一种简单的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

发现了一个不太好的解决方案,滥用了polymorphic_url @device[nil, @device]等同于ruby的try

<%= link_to 'Back', [@config_set.configurable.try(:store).try(:region), @config_set.configurable.try(:store) || @config_set.configurable.try(:region), @config_set.configurable] %>