2014-07-23 26 views
0

我想要參考buildings/index.html.erb中的圖像。我有:從另一個型號中選擇一個型號

class BuildingsController < ApplicationController 
    def index 
    @buildings = Building.all 
    @images = @buildings.images.all 
    end 
end 

class Building < ActiveRecord::Base 
    has_many :images 
end 

class Image < ActiveRecord::Base 
    belongs_to :building 
end 

建築/ index.html.erb

 <% @buildings.each do |building| %> 
     <% if @buildings.images.any? %> 
      <% @buildings.images.name %> 
     <% end %> 
     <% end %> 

我得到以下錯誤:undefined method images for <Array:0x000001109b4680>

回答

2

@buildingsBuilding對象的數組。每個Building對象都有其images方法。您可以遍歷@buildings數組並調用每個成員的images方法。

<% @buildings.each do |building| %> 
    This is Building with ID <%= building.id %>. 
    <% if building.images.any? %> 
    ... 
    <% end %> 
<% end %> 

此外,您不需要控制器中的@images變量。

2

你不是在迭代你的建築物。你需要抓住每一個,然後做你試圖做:

<%- @buildings.each do |building| %> 
    <%- if building.images.any? %> 
    ... 
    <%- end %> 
<%- end %> 

你也可以這樣做:

index.html.erb

<%= render @buildings %> 

這將需要每個Building對象,並將其傳遞給_building.html.erb部分,然後可在做

_building.htm l.erb

<%- if building.images.any? %> 
    ... 
<%- end %>