Рельсы: Не совпадают маршруты - PullRequest
0 голосов
/ 06 декабря 2018

Я получаю эту ошибку с моим кодом

enter image description here

Я получаю эту ошибку с этой строкой в ​​моем show.html.haml для комментария

= link_to comment.user_name, user_path(comment.user_id)

в моем действии создания у меня есть это

def create
  @comment = @post.comments.new(comment_params)
  @comment.user_name = current_user.nickname
  @comment.user_id = current_user.id
  if @comment.save!
    redirect_to @post
  else
    flash.now[:danger] = "error"
  end
end

спасибо за вашу помощь

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Согласно вашему посту, вы создаете пустой комментарий для текущего поста:

= render 'comments/form', comment: @post.comments.build

Вот почему, когда вы выполняете итерацию на @post.comments.each, @post имеет один несохраненный встроенный комментарий без пользователя.

Вы можете исправить это, добавив условие вроде:

- @post.comments.each do |comment|
  - unless comment.new_record?
    .div
      %hr
       = link_to comment.user_name, user_path(comment.user_id)
       ...

Или вы можете добавить в свой PostsController:

def show
  @comment = Comment.new
end

и изменить = render 'comments/form', comment: @post.comments.build на = render 'comments/form', comment: @comment
Таким образом, @post.comments пусто, и вы можете выполнить итерацию, не пропуская ошибку идентификатора.

0 голосов
/ 06 декабря 2018

Отображаемая ошибка missing required keys: [:id] подразумевает, что аргументы user_path не передаются так, как мы могли бы ожидать.comment.user_id может быть nil или вам может потребоваться указать явно = link_to comment.user_name, user_path(id: comment.user_id)

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