mar*_*ion 0 ruby-on-rails ruby-on-rails-3
所以我正在做一个lynda.com Rails基本培训教程,我收到一个视频教程没有的错误.我认为这与我正在使用的不同版本的Ruby&Rails(今天最新版本)有关,而不是他们在录制时使用的版本(我认为在2007年).
这就是我的控制器的样子:
class 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
Run Code Online (Sandbox Code Playgroud)
结束
这就是我的观点:
<html>
<head>
<title></title>
</head>
<body>
Title: <%= @album.title %><br />
Artist: <%= @album.artist %><br />
Genre: <%= @album.genre %><br />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我加载它时得到的错误是:
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'
Run Code Online (Sandbox Code Playgroud)
让我先告诉你,如果代码示例,这已经过时了
def album_list
@albums = Album.find_by_sql('SELECT * FROM albums;')
end
Run Code Online (Sandbox Code Playgroud)
真的在那个视频现在停止观看,因为它会做得更好然后坏.
Ruby on Rails在guides.rubyonrails.com上有一些非常新的和编写良好的文档,我也听说过很多关于http://railstutorial.org/的文章.
现在我也会尝试回答你的问题但由于这段代码几乎没有意义,所以很难.
更改
def album_list
@albums = Album.find_by_sql('SELECT * FROM albums;')
end
Run Code Online (Sandbox Code Playgroud)
至
def index
@albums = Album.all
end
Run Code Online (Sandbox Code Playgroud)
将视图移动并重命名为app/views/albums/index.html.erb
并确保你改变
Title: <%= @album.title %><br />
Artist: <%= @album.artist %><br />
Genre: <%= @album.genre %><br />
Run Code Online (Sandbox Code Playgroud)
至
<% @albums.each do |album| %>
Title: <%= album.title %><br />
Artist: <%= album.artist %><br />
Genre: <%= album.genre %><br />
<% end %>
Run Code Online (Sandbox Code Playgroud)
并在您的路线文件中定义路线 resources :albums
我希望这可以帮助您掌握掌握Rails的正确途径.
| 归档时间: |
|
| 查看次数: |
4794 次 |
| 最近记录: |