2017-05-30 1 views
1

Ich habe diesen Fehler untersucht, aber ich kann dieses Problem nicht lösen.Error_Message teilweise ein NameError abrufen: undefinierte lokale Variable oder Methode "Objekt"

Hier ist _micropost_form.html.erb:

<%= form_for @micropost do |f| %> 
    <%= render partial: 'shared/error_messages', object: f.object %> 
    <div class="field"> 
    <%= f.text_field :content, placeholder: " Caption..." %> 
    </div> 
    <%= f.submit "Post", class: "btn btn-primary" %> 
    <span class="picture"> 
    <%= f.file_field :picture %> 
    </span> 
<% end %> 

Hier ist _error_messages.html.erb

<% if object.errors.any? %> 
    <div id="error_explanation"> 
    <div class="alert alert-danger"> 
     The form contains <%= pluralize(object.errors.count, "error") %>. 
    </div> 
    <ul> 
    <% object.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 

Hier ist microposts_controller

def new 
    @micropost = current_user.microposts.build 
    @feed_items = current_user.feed.paginate(page: params[:page]) 
end 
+0

Was ist '' .object? Bitte zeigen Sie Ihr Schema/Migration für 'MicroPost'-Modell. – Gerry

+0

Teilen Sie 'error_messages' teilweise, sollte das nicht" f.errors "sein? –

Antwort

0

NameError: undefined local variable or method `object'

Sie einen Teil auf zwei Arten, render und render partial: machen kann. Aber wenn Sie partial: verwenden, müssen Sie die Variablen im locals: Hash senden. So wird dies nicht

<%= render partial: 'shared/error_messages', object: f.object %> 

arbeiten Es

<%= render partial: 'shared/error_messages', locals: {object: f.object} %> 

sein sollte oder ohne partial: Schlüssel

<%= render 'shared/error_messages', object: f.object %> 
+1

Das hat funktioniert, danke. Ich habe einen anderen Beitrag über partielle verfolgt: das war nicht die Einheimischen: Hash. –

+1

Antwort akzeptiert, noch neu zu stackoverflow :) –

-3

Sie Ihren Code unter

ändern
<%= render partial: 'shared/error_messages', object: f.object %> 

in

<%= render partial: 'shared/error_messages', object: f.object %> 

hoffe, dass ich diese Hilfe Sie.

0

Ein paar Gedanken:

Hat f.object Wert?

auch - versuchen, so etwas wie dies für object auf die teilweise vorbei:

<%= render partial: 'shared/error_messages', :locals => {:object => f.object} %> 
Verwandte Themen