2013-03-15 16 views
10

File.existsに関してここにいくつかの記事がありますか? Railsアプリケーションでは解決策が役に立たなかったので、私はかなり新しいので、何かばかなことをしているに違いない。Rails File.exist?ファイルが存在するときにfalseを返す

私が使用している

  • のRails 3.2.11
  • ルビー1.9.3
  • ペーパークリップを
  • 作業中の下に言及したファイルをアップロードするActiveAdmin
  • の下に言及したファイルを開発環境
  • アセットがプリコンパイルされていない

私はモデル「スタイル」を持っており、それが画像添付を持って、私は

<%= image_tag(@style.style_image) %> 

で画像をレンダリングすることができますし、それだけで正常に動作します。

要するに、ファイルイメージが実際にそこにあるはずのフォルダにあるかどうかをチェックしたい - @ style.style_image.present?は、dbレコードをチェックするだけなので、画像をチェックします。私はFile.existを使いたいですか?@ style.style_imageのファイルが実際にあるかどうか確認してください。

は、だから私のビューファイルでは、私はコード

<% if File.exist?(@style.style_image.url) %> 
The image exists. 
<% else %> 
The image is not here. 
<% end %> 

を持っており、それは常に私がページをロードすると、「画像がここにいない」印刷します。すぐ下に私はimage_tagを使って私のイメージを表示しているので、イメージがそこにあることを知っています。

また、私は運で

<% if File.exist?(Rails.root + @style.style_image.url) %> 

を試してみました。私もFileTest.exist?、FileTest.exists?、File.existsを使ってみましたか?画像が確実に現れているときは誰も私に真実を伝えません。

紛失しているものがありますか?どのような指針も非常に高く評価されます。私はRubyとRailsのほんの数ヶ月しかないので、何かダムが足りないかもしれません。

+3

URLでなく、 'File.exist?'へのパスを渡す必要があります。 – silasjmatson

+0

なぜこの質問の評価が高いのか分かりません。よく聞かれる。 +1。 – sscirrus

答えて

9

.urlの代わりに@style.style_image.pathと思っています。

必ず印刷してください。

+1

あなたは2つあった、ありがとう!また、私はエラーを起こした、style_imageは別のモデルであり、style_image.imageは実際のイメージです。ですから、うまくいった解決策は '<%File.exist?@ style.style_image.image.path)%>' –

+1

@TomNetzbandです。同じ問題に遭遇する可能性のある人を助けるために、答えを正しいものとしてマークしてください。 –

5

あなたは、ディスク上のWebのURLやファイルを扱っているときはいつでも、あなたが使用している「パス」に注意してください、そして、あなたのファイルを検索する場所にコード、またはブラウザを言っているまっすぐかどうか、それを維持する必要があります同じファイルを要求する方法。

ウェブサーバーは、セキュリティが非常に高いという理由で、多くの理由から、ユーザー/ブラウザからOSのファイル構造を隠しています。たとえば、URLはドライブのルートではなく、サーバーからの相対パスです。

あなたが遭遇したことは非常に一般的であり、ウェブのプログラミングを担当しているすべての人がおそらく同じことに何度も遭遇しています。

関連する問題