Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 按关系乘以记录_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 按关系乘以记录

Ruby on rails 按关系乘以记录,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Ruby On Rails 3.2,这是我的关系: class House has_many: appartments end class Appartments belongs_to: house end class Region has_many: houses end 控制器: @country = Country.find(params[:country_id]) @regions = @country.regions @house = House.find(params[:id]) 看法 在房屋页面上,我有

这是我的关系:

class House
 has_many: appartments
end

class Appartments
 belongs_to: house
end

class Region
 has_many: houses
end
控制器:

@country = Country.find(params[:country_id])
@regions = @country.regions
@house = House.find(params[:id])
看法

在房屋页面上,我有一个标签,我想显示属于房屋的公寓

这是我的循环:

- @regions.each do |region|
  - region.houses.each do |house|
    - @house.appartments.each do |appartment|
      %section
        .row
          .span5
            %h2 #{link_to appartment.name, country_region_appartment_path(@country, region, appartment)}
            %p
我创建这个循环是因为我需要链接的区域值。我得到了属于这所房子的公寓,但我将记录/输出相乘

我做错了什么


谢谢..remco

您认为
@house
地区无关。house
。在一个区域的所有房屋中循环,然后使用控制器
@house

此外,我认为还缺少一些关联:

class Region
  has_many: houses
  belongs_to :country
end

class House
  has_many :appartments
  belongs_to :region
end

class Appartment
  belongs_to :house
end
在控制器上,您只需查询以下区域:

@country = Country.find(params[:country_id])
@regions = @country.regions
在您看来,您应该从房屋中删除
@
,因为它只引用一个预定义房屋:

- @regions.each do |region|
  - region.houses.each do |house|
    - house.appartments.each do |appartment|

这是一种原始的方法,因为它会根据需要触发许多查询。如果你有很多记录,您可以从
ActiveRecord

中使用类似于
include
join
的东西来查看如何快速加载您的数据。您能否更准确地说明您的问题/您希望得到什么?我想展示属于该房屋的公寓……它可以工作,但它可以多次显示公寓
appartments=@regions.flat_-map(&:houses).flat_-map(&:appartments).uniq
然后用
在上面循环。每个
嘿,Remco,如果这是,或者可能会是,一个协作的努力-你不应该有像模型这样大的东西拼写错误。你的
公寓
模型实际上应该是
公寓
。但是你的选择。我试过了,但后来我从该地区得到了所有的公寓,而不是从Murifo家……谢谢……我试过你的想法,但后来我从该地区得到了所有的公寓。。。