Attachment_FuではTypeError(文字列にnilを変換できません。)
-
18-09-2019 - |
質問
私は、ファイルのURLを取得するpublic_filename
方法を提供Attachment_fuと私のRailsアプリで添付ファイルを処理しています。
I私はどうなるの見解では、アップロードされた表紙画像のURLを呼び出したいので、もし、カバーと呼ばれるモデルでそれを使用しています:
<%= image_tag(@cover.public_filename) %>
これは、ユーザーが適切な添付ファイルを持っているときだけ正常に動作しますが、私のアプリケーションでは、添付ファイルをアップロードするユーザーの要件ではありません。
そのため、TypeError例外がスローされます@cover.public_filename
を呼び出す:ファイルがnilであることを明白な理由のための文字列にnilを変換できません。
しかし、私はトラブルのオブジェクトがnilである事実から、この問題にロジックを追加することを抱えている、とunless @cover.public_filename.nil?
またはif @cover.public_filename == nil
のようなものをやってと私の試みのすべては無益されていると同じタイプエラーを引き起こします。
私は何をしないのですか?
解決
私はattachment_fuでは動作しませんでしたが、私が見るようにpublic_filenameは、添付ファイルが取り付けられていないときはnilある一部のフィールドに依存している方法があります。 ここで私はattachment_fuは常に持っている必要があることを読んする添付ファイル - これはおそらく、それはあなたのために動作しなかった理由です。著者はまた、クリップのプラグインを使用することをお勧め。それを見てみましょう!
他のヒント
<%= image_tag(@cover.public_filename) unless @cover.nil? %>
は申し訳ありませんが、コメントすることはできませんので、ここでの更新ですの代わりに:の
@cover.public_filename?
が@cover
オブジェクトであり、そのような何らnil
メソッドを持っていないので、public_filename?
が、ここでは動作しません。
nil.respond_to?('public_filename?') #=> false
更新:
それを確認します:
<%= image_tag(@cover.public_filename) if @cover && @cover.public_filename? %>
これは役立つかもしれません。.. http://david-burger.blogspot.com/2008/ 10 / attachmentfu-WITH-optional.html の