NoMethodError в Sinatra
Форум — Web-development
Разбираюсь с синатра. Столкнулся с проблемой. При переходе на роут:
get '/songs/:id' do
@song = Song.get(params[:id])
slim :show_song
end
во вьюхе show_song.slim следующий код:
h1= @song.title
класс Song таков:
class Song
include DataMapper::Resource
property :id, Serial
property :title, String
property :lyrics, Text
property :length, Integer
property :released_on, Date
end
В итоге выдается ошибка: NoMethodError - undefined method `title' for nil:NilClass: ... бла-бла-бла по тексту.
Понимаю что инстансная переменная криво передается, но вот понять не могу что делать. Пробовал в руби 1.9 и 2.0 - одно и тоже. Может кто-то сталкивался? Куда копать?
И еще вопрос, кроме первого (указанного выше) роута, существует еще один:
get '/songs' do
@songs = Song.all
slim :songs
end
USERULT-7C6EKSC - - [19/Apr/2014:15:03:24] "GET /songs HTTP/1.1" 200 551 - -> /songs ::1 - - [19/Apr/2014 15:03:24] "GET /styles.css HTTP/1.1" 200 661 0.0090
USERULT-7C6EKSC - - [19/Apr/2014:15:03:24] "GET /styles.css HTTP/1.1" 200 661
http://localhost:4567/songs -> /styles.css
а первый пытается зацепить этот цсс из подпапки:
USERULT-7C6EKSC - - [19/Apr/2014:15:02:06] "GET /songs/1 HTTP/1.1" 200 402
http://localhost:4567/songs -> /songs/1
::1 - - [19/Apr/2014 15:02:07] "GET /songs/styles.css HTTP/1.1" 200 402 0.0200
USERULT-7C6EKSC - - [19/Apr/2014:15:02:07] "GET /songs/styles.css HTTP/1.1" 200 402
http://localhost:4567/songs/1 -> /songs/styles.css