Ошеломлен ошибкой контроллера ActiveRecord - PullRequest
0 голосов
/ 31 июля 2010

Я делаю заявку на доске объявлений. Пользователи могут создавать посты, каждый пост требует тега. Пользователи могут комментировать сообщения. Довольно просто Я взломал его и получил ошибку, которую не могу объяснить. Я сделал сообщение, message # index показывает список сообщений, включая самые новые. Заголовок каждого сообщения ссылается на сообщение # show view (здесь ничего особенного) и на 24 других сообщения в index # index можно нажать, чтобы посетить их соответствующее сообщение # show. Но не этот недавний. Я получаю следующую ошибку при посещении сообщения # show of оскорбительного сообщения:

Couldn't find Tag with ID=131

...

/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1586:in `find_one'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:1569:in `find_from_ids'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/base.rb:616:in `find'
/home/vvlist/website/app/controllers/messages_controller.rb:20:in `show'

messages_controller.rb: 20:

@tag = Tag.find(params[:id])

Я действительно не понимаю, что здесь происходит. Может ли кто-нибудь просветить меня? Я выложу любой другой необходимый код. Спасибо, что прочитали мой вопрос.

1 Ответ

1 голос
/ 31 июля 2010

Проблема в том, что вы ищете тег, используя идентификатор сообщения.В messages#show действии params[:id] указан идентификатор модели Message, а не тег.

Предполагается, что Tag является ассоциацией Message, такой как has_one :tag или * 1009.* тогда вы можете получить тег сообщения, используя:

@message = Message.find(params[:id])
@tag = @message.tag # has_one

или

@tags = @message.tags # has_many
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...