2017-12-09 21 views
-1

私はUbuntuを使ってRailsアプリケーションを開発しています。 paperclip gemとImagemagickを使用してウェブサイトに画像を追加しようとするまでは、すべてうまくいきました。Ruby on Rails v5.1とPaperclip gem

モデル、コントローラ、およびおそらくビューを含む必要に応じてコードを実装しました。作成/送信ボタンをクリックすると、フォームのすべてのフィールドが画像を含むデータベースで受け入れられ、更新されます。

undefined method `image' for nil:NilClass 

を、これはエラーを与える行である:しかし、ウェブサイト上で、それは次のようなエラーになります

<%= image_tag @current_user.image.url(:medium) %> 

私はすでにデータベースをドロップすると、新しい移行で作業しようとしましたが、新しいユーザーを作成しようとすると、エラーは依然として発生します。

+0

エラーは '@ current_user'がnilであり、イメージメソッド(または属性)を持っていないと言っています。' @ current_user'の値を確認できますか? –

+0

]> – donkihot5

+0

これはフォームを提出するときのデータベースエントリです – donkihot5

答えて

0

コメントに記載されているとおり、@current_userActiveRecord::Relationですが、imageにアクセスするにはレコードが必要です。あなただけの関係で一つのアイテムを持っているように見えるので、あなたはfirst方法で最初の(そして唯一の)レコードにアクセスすることができます

<%= image_tag @current_user.first.image.url(:medium) %> 

は、しかし、より良いアプローチは、コントローラーまたはヘルパーでこれを行うことであろう最初は@current_userに設定されています。 @current_userを設定する式に.firstを単に追加することができます。

1つの警告には、.firstを追加することで、常にその関係の最初のレコードを選択します。クエリで複数のレコードが返された場合、すべてのレコードは最初のレコードが無視されることを想定しています。クエリがIDのようなユニークなものを検索する場合、これは通常問題ではありません。

+0

あなたは1人のユーザーを意味する場合、 1つのユーザが1つのイメージを持つことを意味するならば、あなたの答えはうまくいくかもしれません。 – donkihot5

+0

あなたが '@ current_user'を計算するために使用しているものは、1つのユーザレコードだけを返しています。 'first'メソッドでそのレコードを選択することができます。実際の問題は、あなたのビューではなく '@ current_user'を計算するために使用しているコードです。あなたはあなたの質問にそのコードを掲載したいかもしれません。 –

+0

私は最終的にはうまくいくようになりましたが、私が持っている新しい問題はイメージのサイズにあります。モデルで変更してもオフです。さて、私はこれを修正する必要があります。あなたのすべての時間と助けをありがとう、私はそれを感謝し、最終的に問題は私が使用した変数にあった。 – donkihot5

関連する問題