Rails - 多态路径 - 索引

时间:2016-11-14 23:38:08

标签: ruby-on-rails ruby indexing polymorphic-associations

我正在尝试学习如何在我的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行时,我得到了正确的结果。

0 个答案:

没有答案