Ruby on rails Rails:显示嵌套列表
我有一个财产清单网站与以下关系结构Ruby on rails Rails:显示嵌套列表,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个财产清单网站与以下关系结构 Region has_many :cities City has_many :investor_cities City has_many :investors through: :investor_cities Investor has_many :investor_cities Investor has_many :cities through: :investor_cities 投资者城市记录投资者更愿意购买的城市。它将用于与投资者匹配房地产 在投资者
Region has_many :cities
City has_many :investor_cities
City has_many :investors through: :investor_cities
Investor has_many :investor_cities
Investor has_many :cities through: :investor_cities
投资者城市记录投资者更愿意购买的城市。它将用于与投资者匹配房地产
在投资者的展示视图中,我想按区域展示他们感兴趣的城市
在控制器中
@regions = Region.all
在视图中
<% @regions.each do |r| %>
<p><%= r.name %></p>
<ul>
<% r.cities.each do |c| %>
<% @inv_cty = InvestorCity.find_by_city_id_and_investor_id(c.id, @investor.id) %>
<% if @inv_city %>
<%= @inv_city.city.name %>
<% end %>
<% end %>
</ul>
<% end %>
但我犯了这个错误
undefined method `investor_cities' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_City:0x007fb47e09b4d0>
我有点不知所措,所以任何想法都会很好。谢谢
编辑-以下内容已起作用。我很想知道如何做得更干净一点。谢谢
而不是使用r.cities.investor\u cities.each do。。。,
尝试使用r.cities。选择“investor\u cities”。其中investor\u id:@investor.id.each do…r.cities.investor\u cities失败,因为investor\u cities是单个城市实例的关联,而不是集合。您的has\u many…through关联似乎不正确。你应该有城市有很多:投资者,通过::投资者城市和投资者有很多:投资者,通过::投资者_cities@vee正确-这是一个输入错误很抱歉回复太晚-我在尝试您的方法SQLite3::SQLException:没有这样的列:investor_cities:从cities WHERE cities.region_id=?中选择investor_cities?和城市。投资者id=1
undefined method `investor_cities' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_City:0x007fb47e09b4d0>
<% @regions.each do |r| %>
<p><%= r.name %></p>
<ul>
<% r.cities.each do |c| %>
<% c.investor_cities.each do |ic| %>
<% if ic.investor_id == @investor.id %>
<li><%= ic.city.name %> <%= ic.investor.id %></li>
<% end %>
<% end %>
<% end %>
</ul>
<% end %>