2015-07-20 1 views
0

Je suis probablement en train de négliger quelque chose de simple ici mais je n'ai toujours pas réussi à trouver le problème.Erreur simple de méthode non définie - Rails

Controller: (première ligne est une longue Thinking requête Sphinx)

@artwork_q = Artwork.search params[:q], :conditions => {:subject => params[:artwork][:subject_ids], :location => params[:artwork][:location_ids], :artist_last => params[:artwork][:artist_id], :artist_first => params[:artwork][:artist_id]}, :order => params[:sort][:title] 
@last_artwork = Artwork.new 
@last_artwork = @artwork_q.last 
render 'index2' 

Vue:

<% @artwork_q.each.with_index do |art, index| %> 
    <div class="a-result<%= " last-one" if art.id == @last_artwork.id %>" id="<%= index %>"> 
<% end %> 

J'ai testé art.id et qui fonctionne bien. Il est le @last_artwork.id qu'il augmente l'erreur qui est la suivante:

NoMethodError in Artworks#index2 
Showing /Users/<user>/Developer/<project>/<rails_root>/app/views/artworks/index2.html.erb where line #49 raised: 

undefined method `id' for nil:NilClass 

Merci pour toute aide!

Répondre

1

[].last => nil En d'autres termes, votre requête ne renvoie aucun résultat. Il suffit de vérifier @artwork_q a des résultats dans avant de les boucler.

<% unless @artwork_q.blank? %> 
    <% @artwork_q.each.with_index do |art, index| %> 
    <div class="a-result<%= " last-one" if art.id == @last_artwork.id %>" id="<%= index %>"> 
    <% end %> 
<% end %> 
+0

il était en fait quelque chose d'autre que je viens de trouver, mais je ne l'ai pas pris en compte non plus, donc je vous remercie! – inthenameofmusik

0

Essayez ceci:

<% unless @artwork_q.blank? %> 
    <% @artwork_q.each.with_index do |art, index| %> 
    <% unless @last_artwork.blank? %> 
     <div class="a-result<%= " last-one" if art.id == @last_artwork.id %>" id="<%= index %>"> 
     <% end %> 
    <% end %> 
<% end %>