2016-12-11 9 views
2

Rails wirft einenSchienen - nicht definierte Methode `‘

"*** NoMethodError Exception: undefined method `' for #<Marketplace::Item:0x000001019dd148>" 

Nach einem .save oder .Gültig? auf @item (Beispiel unten), ich sehe nicht, wo das Problem ist, von meinem Rails Wissen würde ich sagen, dass eine Spalte oder eine Methode nicht richtig eingerichtet wurde, aber das Modell ist ziemlich gerade und da nicht viel in der Steuerung als Nun, könnte mein .valid? durch einige Attribute/Parameter verloren gehen?

item.rb:

class Marketplace::Item < ActiveRecord::Base 
include Shared::AttachmentHelper 

extend FriendlyId 
belongs_to :musico 
has_many :anuncios 
has_many :item_images, :dependent => :destroy 

#Paperclip 
has_attachment :cover, 
    :styles => { 
     :large => "741x570>", 
     :medium => "470x611>", 
     :thumb => "235x", 
     :thumb_anuncio => "90x90#" 
    }, 
    :convert_options =>{ 
     :large => ["-strip","-quality 80"], 
     :medium => ["-strip","-quality 80"], 
     :thumb => ["-strip","-quality 80"] 
    }, 
    :default_url => "missing-image.png" 

validates_attachment :cover, 
    :content_type => { :content_type => ['image/jpeg', 'image/png', 'image/jpg', 'image/bmp'] }, 
    :size => { :in => 0..8.megabytes } 

#Opcoes do DropDown de STATUS 
STATUS = [ "ATIVO", 
      "INATIVO"] 

end 

items_controller.rb

def create 
    @item = Marketplace::Item.new(item_params) 

    respond_to do |format| 
     byebug 
     if @item.save 
      if params[:images] 
       params[:images].each { |image| 
        @item.item_images.create(image: image) 
       } 
      end 

      format.html { redirect_to @item, notice: "Item criado." } 
      format.json { render json: @item, status: :created, location: @item } 
     else 
      format.html { render action: "new" } 
      format.json { render json: @item.errors, status: :unprocessable_entity } 
     end 
    end 
end 

Backtrace: http://pastebin.com/GrDywzKR

+0

Bitte geben Sie mehr von der Backtrace auf der Exception. Das macht es leichter zu sehen, was das Problem ist. – Max

+0

Fertig. http://pastebin.com/GDywzKR –

+4

Da eine der nächsten Zeilen zu der Ausnahme in "FriendlyId :: Base" ist, würde ich damit beginnen. Ich bin mit dem Juwel nicht wirklich vertraut, aber [die Dokumentation] (https://github.com/norman/friendly_id/tree/5.0.5#rails-quickstart) scheint zu implizieren, dass du 'friendly_id' nennen sollst 'mit einem Attribut nach dem Einbinden/Erweitern des Moduls. An dieser Stelle würde ich vorschlagen, ein wenig zu experimentieren: Geht der Fehler weg, wenn Sie die Zeile "extend FriendlyId" entfernen oder wenn Sie die Konfiguration hinzufügen? Geht es weg, wenn Sie den Aufruf "validates_attachment" entfernen? – Max

Antwort

1

Veröffentlichung Kommentar:

@Max richtig ist, sieht aus wie friendly_id Enden einen Sendevorgang (something_that_is_nil.to_s) während tryi ng, um die "freundliche ID" für Ihr Modell zu erstellen. Das Fehlen eines Aufrufs von friendly_id: some_column in Ihrem Modell und einige schlechte Argumentspezifikation/Analyse und Fehlerbehandlung auf Friendly_id's Teil würde den Fehler erklären, den Sie sehen.

Freundlich war es in der Tat das Problem, mir fehlte ein Include.

Verwandte Themen