3

画像をアップロードしてから表示すると、ペーパークリップは正常に機能します。

<%= image_tag @post.photo.url(:medium) %>

問題は、画像がアップロードされていない場合、次のエラーが発生することです。

NoMethodError in Posts#show

Showing /Users/me/RubymineProjects/level_60/app/views/posts/show.html.erb where line #16 raised:

undefined method `[]' for nil:NilClass

<% if @post.photo %>または で画像が存在するかどうかを確認してみ<% if @post.photo != '' %>ます。ただし、画像がアップロードされていない場合でも、どちらも常に true を返します。

画像が存在する場合にのみ、クリップを介して画像を表示するにはどうすればよいですか?

4

1 に答える 1

0

問題は、 for をチェックすると、それが何であれ、 @post.photoequal ではない何かが返されるfalseことです。これをデバッグする@post.photo.inspectには、コントローラに a を出力するか、ログファイルに表示します。

あなたのコメントがそれがオブジェクトであるとすでに言っているのを見ると、Paperclip::Attachmentチェックするのに適した候補は@post.photo.size > 0or @post.photo.errors.empty?、または (おそらく最良)@phost.photo.file?です。

于 2012-10-27T17:15:08.247 に答える