我是铁杆新手。我正在研究社交网络的示例应用程序。我已设法手动上传用户的个人资料图片(通过将上传到/ tmp / image的图像复制到公共文件夹 - public / images / tmp / image)并将路径保存为db为avatar_url。
在个人资料视图中,我使用了
<%= image_tag(@userinfo.avatar_url, :alt=>"Avatar image")%>
并在rails服务器上运行时获取图片。
但之后我通过设置 RailsEnv开发,在开发环境中使用apache在apache中部署了应用程序。之后图像没有加载。我试图去 myip:80 / public / images / tmp / image ,它会提供路由错误。
在网上搜索后,我发现在 production.rb 中添加config.serve_static_assets = true
将解决生产中的问题。但对我没用,因为它还声明默认情况下静态文件将在开发中提供。为了再次确认问题,我启动了rails服务器并打开了localhost:3000 / profile,图像就在那里而没有在myip中获取图像:80 / profile。
所以我需要添加任何其他配置。或者我不应该这样做。
答案 0 :(得分:3)
最后,我得到了解决问题的方法。只是在这里分享。
问题实际上是因为许可问题。该图片将在表单提交的根temp目录中创建。然后我将temp文件夹中的图像复制到公用文件夹。因此它只具有读权限。部署之后,图像返回403禁止错误。
我用过,
FileUtils.chmod 775, target
设置权限。之后它运作良好。
答案 1 :(得分:1)
选项config.serve_static_assets = true
告诉rails为您的应用程序提供静态资产,但该工作应该留给Apache。
您的问题听起来与您的Apache配置相关,而不是rails。
我会看一下tutorial如何配置Apache和Passenger,以确保您的环境设置正确。
公共文件夹中的任何内容都应由Web服务器提供。但是myip:80 / public / images / tmp / image不是有效路径。您还需要在末尾添加一个带扩展名的文件名。