2

RailsアプリでAttachment_fuを使用してファイルの添付ファイルを処理しています。これはpublic_filename、ファイルのURLを取得するメソッドを提供します。Coverというモデルで使用しているので、アップロードされたカバー画像のURLを呼び出す場合は、ビューで次のようにします。

<%= image_tag(@cover.public_filename) %>

これは、ユーザーが適切な添付ファイルを持っている場合は問題なく機能しますが、私のアプリケーションでは、ユーザーが添付ファイルをアップロードする必要はありません。

したがって、呼び出す@cover.public_filenameとTypeErrorがスローされます。ファイルがnilであるという明らかな理由により、nilをStringに変換できません。

ただし、オブジェクトがnilであるため、この問題にロジックを効果的に追加するのに問題があります。また、次のようなことを試みても効果がunless @cover.public_filename.nil?なくif @cover.public_filename == nil、同じタイプエラーが発生します。

私は何が欠けていますか?

4

4 に答える 4

2

私はattachment_fuを使用しませんでしたが、ご覧のとおり、public_filenameは、添付ファイルが添付されていない場合にnilであるいくつかのフィールドに依存するメソッドです。ここで、attachment_fuには常に添付ファイルが必要であると読みました。これがおそらくそれが機能しなかった理由です。著者はまた、ペーパークリッププラグインの使用を提案しています。見てください!

于 2009-04-28T20:01:25.773 に答える
1
<%= image_tag(@cover.public_filename) unless @cover.nil? %>

申し訳ありませんが、コメントできません。代わりに更新を行います。

@cover.public_filename?@covernilオブジェクトであり、メソッドがないため、ここでは機能しませんpublic_filename?

nil.respond_to?('public_filename?') #=> false
于 2009-04-28T17:17:16.540 に答える
0

更新しました:

成功する:

<%= image_tag(@cover.public_filename) if @cover && @cover.public_filename? %>

于 2009-04-28T17:17:57.850 に答える
0

これは役立つかもしれません ..http://david-burger.blogspot.com/2008/10/attachmentfu-with-optional.html

于 2009-07-25T12:17:17.983 に答える