2014-06-30 62 views
0

我有一個模型'畫廊',它與'Exhbition Images'(並與belongs_to相反)具有'has_many'關係。訪問屬於另一個模型的模型

我想通過圖庫模型顯示與每個圖庫相關的圖像。但是我遇到的錯誤

undefined method `exhibition_images' for #<Gallery::ActiveRecord_Relation:0x00000108159dd0> 

當我試圖實現這行代碼

gallery index: 

<%= @gallery.exhibition_images.each do |exhibition_image| %> 
    <%= exhibition_image.title %> 
<% end %> 

我相信這是很簡單的,我失去了一些東西明顯。

畫廊控制器

def index 
    @gallery = Gallery.all 
end 

畫廊模式

class Gallery < ActiveRecord::Base 
    extend FriendlyId 
friendly_id :title, use: :slugged 
belongs_to :guide 
has_many :exhibition_images 
accepts_nested_attributes_for :exhibition_images 
    end 

展覽圖片

class ExhibitionImage < ActiveRecord::Base 
belongs_to :gallery 

has_attached_file :image, styles: { small: "100x100", guide: "500x500" } 
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"] 

end 

SCHEMA

create_table "exhibition_images", force: true do |t| 
t.string "image_file_name" 
t.string "image_content_type" 
t.integer "image_file_size" 
t.datetime "image_updated_at" 
t.integer "gallery_id" 
t.datetime "created_at" 
t.datetime "updated_at" 

create_table "galleries", force: true do |t| 
t.string "title" 
t.string "slug" 
t.integer "guide_id" 
t.datetime "created_at" 
t.datetime "updated_at" 
end 

回答

2
undefined method `exhibition_images' for #<Gallery::ActiveRecord_Relation:0x00000108159dd0> 

您正在嘗試在一個ActiveRecord::Relation訪問exhibition_images。你有關係的對象,因爲你美其名曰:

@gallery = Gallery.all 

這就給了你,你可以用它來鏈接在一起多個查詢條件範圍。您需要獲得一個單獨的圖庫對象才能致電exhibition_images。你可以通過調用@galleryfirst這個,或者你需要通過結果來執行查詢和迭代:

<%= @gallery.each do |gallery| %> 
    gallery.exhibition_images.each do |exhibition_image| %> 
    <%= exhibition_image.title %> 
    <% end %> 
<% end %> 

如果你這樣做,但是,我一定要急於負載exhibition_images

@gallery = Gallery.includes(:exhibition_images).all 
1

問題是@gallery包含一個Gallery對象數組。

在你的控制器,你應該有:

@galleries = Gallery.all 

然後遍歷數組@galleries

<% for gallery in @galleries %> 
    <%= gallery.exhibition_images.each do |exhibition_image| %> 
    <%= exhibition_image.title %> 
    <% end %> 
<% end %> 
相關問題