2016-04-04 9 views
0

Ich versuche, eine neue Datei mit Büroklammer hochladen.undefined Methode `to_key 'für # <ActiveRecord :: Relation []>

def new 
     @other_font = OtherFont.all 
     render :"other_fonts/new" 
    end 

def create 
    @new_font = OtherFont.new(font_params) 
    if @new_font.save 
     redirect other_fonts_path 
    else 
     flash[:notice] = "Was not able to upload, try again" 
     render :'other_fonts/new' 
    end 
end 

Hier ist die Ansicht

<div id="other fonts"> 
<%=form_for @other_font,:html => {:multipart => true} do |f| %> 
<div class="col-2"> 
    <label> 
    <%=f.file_field :file %> 
    </label> 
    </div> 

<%=f.submit "Upload Fonts" %> 
<% end %> 
</div> 

und ich bekomme diese Fehlermeldung

NoMethodError - undefined method `to_key' for #<ActiveRecord::Relation []>: 

Ich habe Büroklammer verwendet, bereits für ein bisschen. Und ich habe den Fehler gegoogelt und die Leute schienen ungefähr denselben Code zu haben.

+0

können Sie den vollständigen Stack-Trace geben? – Shelvacu

Antwort

1

Sie müssen ein neues Objekt erstellen. Ihre neue Aktion sollte also lauten:

def new 
    @other_font = OtherFont.new 
    render :"other_fonts/new" 
end 

Ihr Formular erwartet ein neues Objekt. Aber Sie geben ihm eine ActiveRecord :: Relation

Wie heißt Ihr Controller? - Wenn es OtherFontsController, brauchen Sie nicht render :"other_fonts/new" zu nennen und Ihre Aktion sein sollte:

def new 
    @other_font = OtherFont.new 
end 
+0

Danke, das hat behoben, als ich auf neu gewechselt habe. ! –

+0

@PamelaGuerrero pls markieren meine Antwort als die Lösung;) – psantos

Verwandte Themen