Ошибка.. Попытка включить аватар пользователя с оставленным комментарием

Я использую CarrierWave для загрузки своего аватара. Загрузка и удаление аватара работает в режиме редактирования пользователя и отображается в других видах. Но при попытке включить аватар с комментарием я сталкиваюсь с ошибкой.

TypeError in CommentsController#create
can't cast AvatarUploader to string

app/controllers/comments_controller.rb:10:in `create'

Я не уверен, что я сделал неправильно.

  **comments_controller.rb**

  def create
  @post = Post.find(params[:post_id])
  @comment = @post.comments.create(comments_params)
  @comment.user_name = current_user.user_name
  @comment.avatar = current_user.avatar
  if @comment.save
   redirect_to @post
  else
   flash.now[:danger] = "error"
  end
  end

1 ответ

Решение

Редактировать:

Я бы предложил не сохранять аватар пользователя против каждого комментария.

Скорее я бы сделал это:

  1. Настройте свои модели так, чтобы комментарий belongs_to пользователь и пользователь has_many Комментарии
  2. При создании комментария сохраните user_id как current_user.id
  3. В вашем частичном / просмотре при отображении комментариев сделайте что-то вроде:

<%= image_tag(@comment.user.avatar) %>

Оригинал:

Вам не нужно делать это в вашем контроллере.

Попробуйте просто это по вашему мнению:

<%= image_tag(current_user.avatar) %>
Другие вопросы по тегам