2016-03-06 3 views
-1

Это должно работать нормально:Нет ошибки пути для класса

#comment.rb 
def next 
    self.class.where("id > ?", id).first 
end 

#comments_controller.rb 
def show 
    find_comment 
    @next_comment = @comment.next 
end 

#show.html.haml 
= link_to "next", @next_comment 

#routes.rb 
resources :articles do 
    resources :comments 
end 

Я получаю undefined method comment_path ошибку.

Что мне не хватает? Пожалуйста, дайте мне знать, если есть какие-либо файлы, которые я не включил.

UPDATE:

Хорошо, благодаря @pascal Бец он идет на правильный URL. Я получаю ошибку теперь undefined method article for nil:NilClass, указывая на кнопку линии в шоу-странице:

= link_to 'Next', article_comment_path(@next_comment.article, @next_comment)

+0

Что делает рейк-маршрут? – jvillian

+0

Ваше обновление: это означает, что @next_comment равно нулю. Вы проверили это? Не будет следующего комментария. Поэтому вам нужно сделать эту ссылку условной (только если присутствует следующий_комментарий). Это помогает? –

+0

Да, это работает. Большое спасибо. – Liroy

ответ

1

Ваш comments вложены под articles.

Вы можете создать ссылку, как так:

link_to 'next', [@next_comment.article, @next_comment] 

или

link_to 'next', article_comment_path(@next_comment.article, @next_comment) 

Это создаст URL как

articles/123/comments/456

Где 123 это идентификатор статьи и 456 это идентификатор комментария.

Об обнаружении следующего комментария: возможно, я бы выбрал DateTime, например created_at или posted_at (что бы вы не имели в своей модели) вместо первичного ключа.

+1

Где вы можете получить эту ошибку? На странице "следующий комментарий"? Возможно, следующий комментарий отсутствует. Вы должны визуализировать эту ссылку условно. –

+0

У вас недостаточно информации, чтобы помочь вам. Как выглядит шаблон, каково сообщение об ошибке. –

+0

Обновите свой вопрос соответствующей информацией. В какой строке появляется ошибка. Показать исходный код. Я предполагаю, что он находится в @ next_comment.article. Это указывает на то, что оно не инициализировано –

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