Donc, je fais un tutoriel d'entraînement essentiel de lynda.com Rails, et j'obtiens une erreur que le didacticiel vidéo ne fait pas. Je suppose que cela a à voir avec les différentes versions de Ruby & Rails que j'utilise (le dernier en date d'aujourd'hui) par opposition à celles qu'ils utilisaient quand cela a été enregistré (je pense en 2007).Méthode non définie/NoMethodError dans Rails 3
C'est ce que mon contrôleur ressemble à:
classe PublicController < ApplicationController
def album_list
@albums = Album.find_by_sql('SELECT * FROM albums;')
end
def alt_album_list
release_date = '2011-10-01'
artist = 'Paul'
@albums = Album.find(:all,
:conditions => ["release_date <= ? AND artist LIKE ?", release_date, '%' + artist + '%'],
:order => 'release_date ASC',
:limit => 1, :offset => 1)
render(:action => 'album_list')
end
def one_album_list
release_date = '2011-10-01'
artist = 'Paul'
@album = Album.find(:first,
:conditions => ["release_date <= ? AND artist LIKE ?", release_date, '%' + artist + '%'],
:order => 'release_date ASC')
end
fin
C'est ce que mon point de vue ressemble à:
<html>
<head>
<title></title>
</head>
<body>
Title: <%= @album.title %><br />
Artist: <%= @album.artist %><br />
Genre: <%= @album.genre %><br />
</body>
</html>
L'erreur que je obtenir quand je le charge est:
NoMethodError in Public#show_album
Showing C:/Users/<username>/music_library/app/views/public/show_album.rhtml where line #8 raised:
undefined method `title' for nil:NilClass
Extracted source (around line #8):
5:
6: <body>
7:
8: Title: <%= @album.title %><br />
9: Artist: <%= @album.artist %><br />
10: Genre: <%= @album.genre %><br />
11:
Rails.root: C:/Users/<username>/music_library
Application Trace | Framework Trace | Full Trace
app/views/public/show_album.rhtml:8:in `_app_views_public_show_album_rhtml___574395264_32579964__949661750'
Bien que vous pensiez avoir résolu votre problème apprendre les bonnes pratiques Rails à partir des bonnes sources. Cela vous épargnera beaucoup de peine plus tard. – allesklar
La réponse de Maran est correcte. Vous devriez suivre son conseil. – maxiperez