加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读