2014-10-28 2 views
0

Я новичок в Rails, я делаю модель с вложенными атрибутами, отлично работает. Но за время, чтобы показать все вложенные атрибуты, я получаю сообщение об ошибке.Rails 4 - Как показать все вложенные атрибуты?

Модель

class Slide < ActiveRecord::Base 
    belongs_to :user 
    has_many :images, :dependent => :destroy 
    accepts_nested_attributes_for :images, :reject_if => lambda { |a| a[:img_str].blank? } 
end 

class Image < ActiveRecord::Base 
    belongs_to :slide 
    validates :img_str, presence: true 
    mount_uploader :img_str, AssetUploader 
end 

slides_controller

def index 
    @slide = Slide.all 
end 

слайдов/просмотр/индекс

<% @slide.each do |slide| %> 
    <%= slide.images.img_str %> 
<% end %> 

Rails показать это:

undefined method `img_str' for #Image::ActiveRecord_Associations_CollectionProxy:0x00000003e98dd0 

Как я могу установить связь с моделью изображения?

+0

Вы можете жаждущих загрузки изображений для слайдов в 'index' метод, чтобы избежать п + 1 запросов:' @slide = Slide .includes (: изображения) .all'. – Surya

ответ

0

images представляет собой набор объектов изображения. То, что вы делаете, это как вызов атрибут объекта изображения на матрице изображения объектов

<% @slide.each do |slide| %> 
    <%slide.images.each do |image|%> 
    <%= image.img_str %> 
    <%end%> 
<% end %> 
+0

На самом деле вам не нужно '=' в '<% = slide.images.each do | image |%>', это может быть просто '<% slide.images.each do | image | %> '. – Surya

+0

Да, это была ошибка – usha

+0

@vimsha да! работает отлично, спасибо! –

Смежные вопросы