显示当前视图路径中的文件列表

时间:2014-12-23 19:11:30

标签: ruby-on-rails ruby

我有一个像这样的视图文件夹:app/views/pages/tests/*。在该文件夹中有几个子文件夹和一个index.html.slim。在index.html.slim文件中,我想自动生成指向所有子文件夹的链接列表。我不确定如何开始,因为我不知道如何从视图文件中获取当前视图的路径。

编辑:

我应该提一下,这些视图文件的提供方式与thinkbot High Voltage gem类似,即app/views/pages/*中的所有内容都由PagesController提供。如果找不到匹配的路由,我们将获取请求的路由,将其发送到PagesController,并在app/views/pages目录中提供相应的视图文件。因此http://localhost:3000/tests/a/会加载app/views/pages/tests/a/index.html.slim。实际上,PagesController已成为静态文件服务器。

所以在其中一些'静态'目录,我想打印目录内容。我需要找到一种动态的方法来确定当前服务的视图的路径,然后获取该路径中的所有文件以输出它们。

这是一个非常具体的用例,但我想知道是否有任何一般方法可以从视图中确定视图的路径,所以我可以这样做:

ul
  - current_view_directory.files.each do |file|
    li = link_to file, file.path

1 个答案:

答案 0 :(得分:2)

逻辑属于控制器,而不属于视图。

伪代码:

class MyController < ApplicationController

  def index
    dir = Rails.root.join('app', 'views', 'pages', 'tests').to_s
    @subdirs = Dir.glob("#{dir}/**/*").select{|f| File.directory? f}
  end

您的编辑描述了想要从同一个控制器提供各种静态页面。

伪代码:

class PagesController < ApplicationController

  def show
    static_page_key = params[…] # edit this line to work with your routing
    dir = Rails.root.join('app', 'views', 'pages', static_page_key).to_s
    @subdirs = Dir.glob("#{dir}/**/*").select{|f| File.directory? f}
  end