1
resposta

Paperclip

Estou usando o paperclip para gravar as imagens no banco.

Eu tenho uma tabela de Propriedades (casa, apartamento, terreno) e tenho uma tabela de imagens relacionadas a essa tabela.

Eu consigo gravar a imagem, mas na hora de mostrar, diz que não tem o metodo image.

Classe Property

class Property < ApplicationRecord
  has_many :pictures, dependent: :destroy
  accepts_nested_attributes_for :pictures, reject_if: :all_blank, allow_destroy: true
  enum property_type: [:Terreno, :Casa, :Apartamento]
end

Classe Picture

class Picture < ApplicationRecord
  belongs_to :property

  has_attached_file :image, styles: { medium: "300x300>", thumb: "100x100>" }
  validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/
end

Página Index

<div class="row">
  <div class="col-md-8">
    <% @properties.each do |property|%>
      <div class="panel panel-default">
        <div class="panel-body">
          <b>Tipo: </b><span><%=property.property_type%></span></br>
          <b>Nome: </b><span><%=property.name%></span></br>
          <%= image_tag property.pictures.first.image.url(:thumb) %>
        </div>
        <div class="panel-footer">
        </div>
      </div>
      <br>
    <% end %>
  </div>
</div>

O que esta errado? Esse erro só dá na view, no terminal funciona.

1 resposta

Oi Bruno,

No erro deve mostrar o tipo do objeto que ele deve estar procurando, por exemplo:

undefined method `image' for nil:NilClass

É isso que está aparecendo? Se for, deve ter alguma propriedade sem foto. Dá uma olhadinha no banco e veja como estão cadastradas.

Abraço!