2017-05-30 2 views
1

J'ai recherché cette erreur mais je ne suis pas en mesure de résoudre ce problème.error_message obtention d'une erreur NameError: variable locale non définie ou méthode `object '

Voici _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 %> 

Voici _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 %> 

Voici microposts_controller

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

Qu'est-ce '' .object? Veuillez montrer votre schéma/migration pour le modèle 'Micropost'. – Gerry

+0

Partagez vous 'error_messages' partiel, ne devrait-ce pas être' f.errors'? –

Répondre

0

NameError: undefined local variable or method `object'

Vous pouvez rendre une partielle de deux façons, render et render partial:. Mais lorsque vous utilisez partial:, vous devez envoyer les variables dans le hachage locals:. Donc, cela ne fonctionnera pas

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

Il devrait être

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

ou sans la clé partial:

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

Ça a marché, merci. Je suivais un autre post à propos de partiel: cela n'incluait pas les locaux: hash. –

+1

Réponse acceptée, toujours nouveau sur stackoverflow :) –

-3

Vous pouvez modifier votre code ci-dessous

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

dans

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

J'espère que cela vous aide.

0

A pensées couple:

Est-ce que f.object ont une valeur?

aussi - essayer quelque chose comme ça pour passer object à la partie:

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