0

アバターのアップロードに 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
4

1 に答える 1

1

編集:

各コメントに対してユーザーのアバターを保存しないことをお勧めします。

むしろ、私はこれを行います:

  1. belongs_toユーザーがコメントし、ユーザーがコメントするhas_manyようにモデルを設定します。
  2. コメントを作成するときは、名前を付けて保存しuser_idますcurrent_user.id
  3. コメントを表示するときのパーシャル/ビューで、次のようにします。

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

オリジナル:

コントローラーでこれを行う必要はありません。

あなたの見解でこれを単純に試してください:

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