0

我正在使用 CarrierWave 上传头像。头像的上传和删除在用户编辑视图中进行,并在其他视图中显示。但是,当尝试在评论中包含 Avatar 时,我遇到了错误。

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
4

1 回答 1

1

编辑:

我建议不要针对每条评论保存用户的头像。

相反,我会这样做:

  1. 设置您的模型,以便评论belongs_to用户和用户has_many评论
  2. 创建评论时另存user_idcurrent_user.id
  3. 在显示评论时在您的部分/视图中执行以下操作:

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

原来的:

您不需要在控制器中执行此操作。

在您的视图中简单地尝试这个:

<%= image_tag(current_user.avatar) %>
于 2015-03-05T03:47:10.443 回答