2014-12-26 3 views
-2

Я пытаюсь выполнить поиск, но не получил никакого результата. Это неверно:Завершено 500 Внутренняя ошибка сервера в Ruby on Rails

+0

Никакое тело не может понять это :(Опубликовать трассировку Кстати, вы проверили трассировку и попытались выяснить, какая строка вызвала проблему? –

+0

Линия, вызвавшая проблему «@ aroles.each do | rol |», это как obj был ноль, но есть строки в databae –

+0

Этот код абсолютно опасен. Простейший запрос выполняется с необработанным SQL без какого-либо экранирования, результат визуализируется в JSON вручную. Имя метода - CamelCased и путается с константой Я даже не говорю об использовании моделей и ассоциаций. Я желаю вам удачи, сэр. Никаких сарказмов. Но я смиренно рекомендую переписать это. –

ответ

1

Просто взглянув на код, без следа, я могу увидеть только одно, что может вызвать ошибку.

ActiveRecord::Base.connection.execute 
#the result of the above code is Mysql2::Result of course depending on what database you're using. 

Следовательно, вы не можете использовать оператор (dot) для результата, как вы бы сделали на объекте модели.

Таким образом, можно сделать следующие изменения в коде

@aroles.each do |rol| 
    #puts rol.id_role => this will throw error 
    puts rol[0] # this should work assuming id_role is the first column 
end 

Это должно помочь. Как вы упомянули в комментарии, что ваша ошибка возникает в @aroles.each do |rol|, тогда вы должны проверить, возвращает ли оператор sql какие-либо результаты вообще?

BTW, даже если запрос не возвращает никаких результатов, он просто вернет пустой массив и итерация пустого массива будет просто ничего не давать, но не вызывать никаких ошибок.

Так заключить

  1. Проверьте, какие записи будут возвращены на всех
  2. Использование индекса вместо имени столбца, поскольку они являются active_record объекты

Надежда, что помогает.

+0

Большое вам спасибо, ваша информация была полезной. –

+1

Не забывайте принять ответ, если он решил проблему ур. –

Смежные вопросы