Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:显示嵌套列表_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

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 %>