Ошибка.. Попытка включить аватар пользователя с оставленным комментарием
Я использую 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 ответ
Решение
Редактировать:
Я бы предложил не сохранять аватар пользователя против каждого комментария.
Скорее я бы сделал это:
- Настройте свои модели так, чтобы комментарий
belongs_to
пользователь и пользовательhas_many
Комментарии - При создании комментария сохраните
user_id
какcurrent_user.id
- В вашем частичном / просмотре при отображении комментариев сделайте что-то вроде:
<%= image_tag(@comment.user.avatar) %>
Оригинал:
Вам не нужно делать это в вашем контроллере.
Попробуйте просто это по вашему мнению:
<%= image_tag(current_user.avatar) %>