ruby – Sinatra视图中的相对路径问题
发布时间:2020-12-17 03:44:01 所属栏目:百科 来源:网络整理
导读:我在我的erb文件中发布图像之前使用以下代码检查文件是否存在.这是一个 ruby / sinatra应用程序 – 而不是rails. % @imagename = @place.name + ".jpg" % % if FileTest.exist?( "/Users/Tim/projects/game/public/" + @imagename ) % pimg src= '%= @imagen
我在我的erb文件中发布图像之前使用以下代码检查文件是否存在.这是一个
ruby / sinatra应用程序 – 而不是rails.
<% @imagename = @place.name + ".jpg" %> <% if FileTest.exist?( "/Users/Tim/projects/game/public/" + @imagename ) %> <p><img src= '<%= @imagename %>' width="400" height="300" /> </p> <% end %> 当我将它发布到Heroku时,它显然是行不通的. 我尝试使用相对路径,但我无法让它工作: <% if FileTest.exist?( "/" + @imagename ) %> 解决方法
以/开头的路径不是相对路径,这是绝对路径.它表示转到root,然后向下导航到以下路径
第一步是检查您的应用运行的位置.即什么是当前目录.要暂时执行此操作,请将<%= Dir.pwd%>在你的视图中,在本地和Heroku上尝试这个来比较两个环境. 然后尝试从此文件夹到图像的相对路径.例如如果应用程序从/ Users / Tim / projects / game运行,则公共的相对路径只是公共的,因此图像的路径将是File.join(‘public’,@ imagename) 如果您需要更多帮助,请从两个环境中发布Dir.pwd的值 这是另一种方法: __FILE__是一个特殊的Ruby变量,它给出了当前文件的相对路径. 利用它,在启动应用程序的.rb文件中设置常量,如下所示: APP_ROOT = File.dirname(__FILE__) (应用程序的config.rb中的类似行用于在Rails应用程序中设置RAILS_ROOT) 然后在您的视图中,您可以使用: FileTest.exist?(File.join(APP_ROOT,'public',@imagename)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |