Ruby on rails 如何在Rails 3.2中获得相对路径?
我有一个文件列表,我试图得到一个相对路径Ruby on rails 如何在Rails 3.2中获得相对路径?,ruby-on-rails,Ruby On Rails,我有一个文件列表,我试图得到一个相对路径 file = "/Users/yves/github/local/workshop/public/uploads/craftwork/image/1/a1d0.jpg" Rails.public_path => "/Users/yves/github/local/workshop/public" #我正在尝试获取=>“uploads/craftwork/image/1/a1d0.jpg” file.relative_path_from(Rails
file = "/Users/yves/github/local/workshop/public/uploads/craftwork/image/1/a1d0.jpg"
Rails.public_path => "/Users/yves/github/local/workshop/public"
#我正在尝试获取=>“uploads/craftwork/image/1/a1d0.jpg”
file.relative_path_from(Rails.public_path)#错误
#提升:对于#您可以使用未定义的方法“relative_path_from”进行“欺骗”,只需使用sub
$ cat foo.rb
file = "/Users/yves/github/local/workshop/public/uploads/craftwork/image/1/a1d0.jpg"
public_path = "/Users/yves/github/local/workshop/public"
puts file.sub(/^#{public_path}\//, '')
$ ruby foo.rb
uploads/craftwork/image/1/a1d0.jpg
你可以“作弊”,只需使用sub
$ cat foo.rb
file = "/Users/yves/github/local/workshop/public/uploads/craftwork/image/1/a1d0.jpg"
public_path = "/Users/yves/github/local/workshop/public"
puts file.sub(/^#{public_path}\//, '')
$ ruby foo.rb
uploads/craftwork/image/1/a1d0.jpg
由于这些属性现在返回字符串,我们可以将它们转换回路径名:
public_path = Pathname.new( Rails.public_path )
file_path = Pathname.new( file )
然后使用相对路径函数,最后将其转换回字符串
relative_path = file_path.relative_path_from( public_path ).to_s
一起成为
Pathname.new( file ).relative_path_from( Pathname.new( Rails.public_path ) ).to_s
由于这些属性现在返回字符串,我们可以将它们转换回路径名:
public_path = Pathname.new( Rails.public_path )
file_path = Pathname.new( file )
然后使用相对路径函数,最后将其转换回字符串
relative_path = file_path.relative_path_from( public_path ).to_s
一起成为
Pathname.new( file ).relative_path_from( Pathname.new( Rails.public_path ) ).to_s
这就是我所用的:
"#{Rails.root}/public/spreadsheets/file_name.xlsx"
这就是我所用的:
"#{Rails.root}/public/spreadsheets/file_name.xlsx"
我认为来自
的相对路径是路径名
上的Ruby方法;不知道Rails曾经将它添加到字符串中(并不意味着它没有,但我在任何地方都没有看到)。看来它需要另一个路径名,而不是字符串,因为它在参数上调用cleanpath
。我认为中的相对路径是路径名上的Ruby方法;不知道Rails曾经将它添加到字符串中(并不意味着它没有,但我在任何地方都没有看到)。当然,它需要另一个路径名,而不是字符串,因为它对其参数调用cleanpath
。@Derk-Jan很好。我以为他会使用Rails.root等使其不依赖于目录。@Derk-Jan说得对。我认为他会使用Rails.root等使其成为目录无关的。