6

ショービューで、image_tagビルダーを使用して画像を表示しようとすると、レールはショービュー内のパブリックフォルダー内の画像を検索しません...

例えば:

<%= image_tag "thumbnails/fish.jpg" %>

これを生成します:

ActionController::RoutingError (No route matches [GET] "/uploads/thumbnails/fish.jpg"):

アップロードモデルにペーパークリップジェムを使用しており、セキュリティ上の理由からパブリックフォルダーとは別のフォルダーにアップロードを保存しています。はい、この表示ビューはアップロードコントローラー内で発生します...

アップロードモデルでは、次の行を使用して、アップロードを非公開フォルダーに保存します。

has_attached_file :upload,  :path => ":rails_root/:class/:id/:basename.:extension",
                            :url => ":rails_root/:class  /:id/:basename.:extension"

レーキルート:

upload GET    /uploads/:id(.:format)                                                                 {:action=>"show", :controller=>"uploads"}
       PUT    /uploads/:id(.:format)                                                                 {:action=>"update", :controller=>"uploads"}
       DELETE /uploads/:id(.:format)                                                                 {:action=>"destroy", :controller=>"uploads"}
              /download/:id(.:format)                                                                {:controller=>"uploads", :action=>"download"}

編集 注:明示的にimgタグを作成し、srcを画像にポイントすると、ショービューで正常に機能するため、権限の問題ではないと思います。

4

2 に答える 2

7

答えはかなり単純で、Railsがこれほど厄介であるとは信じられませんが、パスの先頭にスラッシュを含める必要がありました。

"thumbnails/fish.jpg"

になります

"/thumbnails/fish.jpg"

なぜこれがインデックス以外のビューでのみ問題になるのか、私はまだ興味があります...

于 2012-07-03T19:49:11.473 に答える
2

この行をtrueに変更する必要がある場合があります。

config.serve_static_assets = false

environment / *。rbファイル(例:development.rb)内。

または、これが問題のディレクトリのアクセス許可の問題であるため、ディレクトリのCHMOD 777が問題を解決するか、正しい方向を示す可能性があることを確認しました。

これが同様の問題に関するSOチケットです

于 2012-06-27T05:28:16.367 に答える