【问题标题】:Iterate through files in rails directory, do something with filename?遍历rails目录中的文件,对文件名做些什么?
【发布时间】:2013-02-06 20:36:20
【问题描述】:

在我的 rails 项目结构中,我在路径 db/pages 下创建了一个文件夹 pages 。我想遍历这个 db/pages 目录和 DoSomething 中的所有 html.erb 文件以及每个文件的文件名。所有这一切都应该在我运行 rake db:seed 时发生,所以我将代码放在了seeds.rb 中

下面是我尝试的代码:

source_path = "/db/pages"

Dir.glob("#{source_path}/*.html.erb").each do |html_page|
  DoSomething html_page
end

当我运行 rake db:seed 时,这似乎什么也没做。我哪里出错了?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1


    【解决方案1】:

    尝试在 Rails.root 之前添加:

    Dir.glob("#{Rails.root}#{source_path}/*.html.erb").each do |html_page|
    

    更正确的方法是:

    source_path = Rails.root.join('db', 'pages')
    
    Dir.glob("#{source_path}/*.html.erb").each do |html_page|
    

    【讨论】:

    • 这可行,但给出了文件名的整个路径...如何仅从路径中提取文件名?所以我想要来自 C:/Sites/MyApp/db/pages/example.html.erb 的示例
    • 您可以为此使用File.basenameDoSomething File.basename(html_page, ".html.erb")
    猜你喜欢
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2017-05-20
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多