2013-12-18 31 views
0

在我的应用程序中,我使用Carrierwave进行文件上传。我做的图像与MiniMagick调整并保存图像作为大版本是这样的:为什么link_to助手在Rails生产中显示错误的路径?

version :large do 
    resize_to_limit(100, 100) 
end 

在我称之为“大”型的观点:

<%= image_tag @user.avatar.url(:large) %> 

在发展ENV,图像显示起来路径是正确的:

<img src="/uploads/user/...."> 

生产包膜,无图像被显示,因为呈现WRO NG路径(它会预先考虑应用程序名称):

<img src="appname/uploads/user/...."> 

我使用nginx的,独角兽,Capistrano的,红宝石2.0.0p353和Rails的Ubuntu的服务器4.0.2

的nginx.conf:

upstream unicorn { 
    server unix:/tmp/unicorn.appname.sock fail_timeout=0; 
} 

server { 
    listen 80 default deferred; 
    server_name appname.domain.com; 
    root /home/deployer/apps/appname/current/public; 

    location ~ ^/(assets)/ { 
    root /home/deployer/apps/appname/current/public; 
    gzip_static on; # to serve pre-gzipped version 
    expires max; 
    add_header Cache-Control public; 
    } 

    try_files $uri/index.html $uri @unicorn; 
    location @unicorn { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://unicorn; 
    } 

    error_page 500 502 503 504 /500.html; 
    client_max_body_size 4G; 
    keepalive_timeout 10; 
} 

的carrierwave上传:

class UserUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :large do 
    resize_to_limit(100, 100) 
    end 

end 
+0

你的nginx配置是什么样的?你有一些重写上传路径的机架中间件,还是nginx提供静态资产等? – cpjolicoeur

+0

@cpjolicoeur应该是默认设置,我添加了nginx.conf – crispychicken

+0

你的carrierweave配置怎么样? – cpjolicoeur

回答

0

最后,它的工作。我不得不从production.rb中删除这一行(我最初在那里为多个rails应用提供服务):

config.relative_url_root = "/appname" 
相关问题