2014-01-08 6 views
0

Я не понимаю, почему я получаю ошибку «nil не является символом» на результат рендеринга. Можете ли вы помочь мне решить проблему?Rails TypeError nill when render

def location 
// debug 
@warps = Warp.all 
render json: @warps 
end 

enter image description here

enter image description here

CREATE TABLE IF NOT EXISTS `warps` (
`warp` varchar(15) COLLATE utf8_unicode_ci NOT NULL, 
`x` double NOT NULL, 
`y` double NOT NULL, 
`z` double NOT NULL, 
`yaw` float NOT NULL, 
`pitch` float NOT NULL, 
`greeting` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, 
`owner` varchar(15) COLLATE utf8_unicode_ci NOT NULL, 
`world` varchar(25) COLLATE utf8_unicode_ci NOT NULL, 
`created` int(10) NOT NULL, 
PRIMARY KEY (`warp`,`world`) 
) 

class Warp < ActiveRecord::Base 
end 

UPD:

После тестов я обнаружил, что эта ошибка происходит потому, что у меня есть двойной первичный ключ: PRIMARY KEY (`warp`,`world`)

+0

Вы уверены, что Warp.all возвращает записи? – Doon

+0

@ Да, да, я уверен –

+0

В консоли сделайте 'Warp.all.to_json' и посмотрите, что произойдет? – Doon

ответ

0

Попробуйте:

def location 
respond_to do |format| 
format.html # index.html.erb 
format.json { render :json => @warps.to_json} 
end 
end 

В любом случае убедитесь, что @warps возвращает результаты.

+0

Если я изменю Warp.all на Stat.all, все работает нормально. Ваше решение бросает неопределенный метод 'response_to ' –

+0

Какова ваша версия Rails и Ruby? – skozz

+0

Rails версия 4.0.2. Я использую Rails :: API gem. –