【问题标题】:How to access public folder from a model method?如何从模型方法访问公用文件夹?
【发布时间】:2014-01-13 16:42:30
【问题描述】:

我想在模型中做这样的事情,使用像 db 这样的公用文件夹来存放文件。

all_images = []
(1..100).each do |image_number|
   if File.exists?("/img/#{image_number}.jpg")
      # add image path to the list
   end
end

Rails 有没有办法以这种方式“查看”公共目录中的文件?

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

如果您使用asset pipeline,并且想检查资产是否存在,请在资产文件夹中查找它:

 all_images = 1.upto(100).map do |image_number|
   path = Rails.root.join("assets/images/#{image_number}.jpg")
   path if File.exists?(path)
 end.compact

如果您在public 文件夹中有资产,除非您使用 Rails

 all_images = 1.upto(100).map do |image_number|
   path = Rails.root.join("public/img/#{image_number}.jpg")
   path if File.exists?(path)
 end.compact

【讨论】:

    【解决方案2】:

    您可以通过Rails.root.join('public', 'img', '1.jpg')访问它

    【讨论】:

      【解决方案3】:

      我建议使用(来自 rake gem) http://rake.rubyforge.org/classes/Rake/FileList.html

      【讨论】:

        【解决方案4】:

        要检查文件是否存在,您可以使用:

        if File.exists?("#{Rails.public_path}/img/#{image_number}.jpg")

        无论文件系统如何,这都可以工作:

        if File.exists?(File.join(Rails.public_path, "img", "#{image_number}.jpg"))

        要获取所有现有文件,您可以链接#map#select

        all_images = (1..100).
          map { |i| File.join(Rails.public_path, "img", "#{i}.jpg") }.
          select{ |path| File.exists? path }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-21
          • 1970-01-01
          • 2019-04-09
          • 2018-11-25
          • 2019-11-23
          • 2019-09-10
          • 2017-06-04
          相关资源
          最近更新 更多