我正在尝试学习如何在我的Rails 5应用程序中使用多态关联。
我把它全部插入 - 感谢这篇文章:https://rubyplus.com/articles/3901-Polymorphic-Association-in-Rails-5
现在,在我的索引视图中,我正在尝试根据模型中的一个属性创建过滤索引的链接。
多态资源称为package_bips。我的package_bips模型有:
belongs_to :ipable, :polymorphic => true, optional: true #, inverse_of: :bip
package_bips表有一个名为:status。
的属性在我的package / bips / index.html.erb中,我正在尝试根据状态值(“搜索”或“提供”)创建链接。
我这样想:
<%= link_to "Offers", polymorphic_path([@ipable, @bips.where(:status => "Offered")]) %>
我也尝试在bips控制器的索引操作中创建一行:
@bips_offered = @ipable.bips.where(:status => "Offered")
然后在我的索引中尝试:
<%= link_to "Offers", polymorphic_path(@bips_offered) %>
我的常规索引操作效果很好(显示所有相关的bips,包括搜索和提供)。
<%= link_to "All", action: :index %>
我只想要生成该组子集的链接。
谁能看到怎么做?
下次尝试
我尝试使用范围来避免必须弄清楚如何为多态索引路径赋予属性。
我知道我的bip.rb中有这些范围:
scope :offered, -> { where(status: 'Offered') }
scope :sought, -> { where(status: 'Sought') }
然后在我的双控制器索引动作中,我有:
def index
@bips = @ipable.bips
@offered_bips = @ipable.bips.offered
@sought_bips = @ipable.bips.sought
end
然后在我的views / package / bips / index.html.erb中,我正在尝试:
<%= link_to "Offered", polymorphic_path(@offered_bips) %>
错误消息,无论我尝试哪种方式,都说:
undefined method `to_model' for #<ActiveRecord::AssociationRelation []>
Did you mean? to_xml
我不明白这个错误信息是什么意思(只用英文)。我认为这意味着它无法找到要关联的模型,但这没有任何意义,因为当我使用索引操作的@bips行时,我得到了正确的结果。