2013-08-18 45 views
0

我需要知道一个目录是否为空,以便它们不会显示。如何在控制器中创建实例变量并在视图中使用实例变量?

试图存储:如果一个目录有文件;然后我会在视图中调用它。

def index 
    @filter = params[:filter] 
    @type = params[:type] 
    @content = [] 

if @filter 
directory_path = "public/files/marketing/voip" 
directory = Dir.glob("#{directory_path}/#{@filter}/#{@type}") 
directory.each do |data| 
if File.exists?(data) && !File.directory?(data) 

    @content = Array.new("#{@type}") 

end 
@view = 'types' 
end 
end 

我不知道如何存储信息,在这里我想存储只有空目录的@type。

然后在视图中调用@content以显示具有存储的@type的目录。

+0

你能提供更多的上下文,也许是一个具体的问题吗?在控制器中创建的任何实例变量都可以在相应的视图中找到。 –

+0

我想在不为空的Web浏览器上显示目录。将显示包含文件的目录。在这里,我试图为每个非空目录存储目录的'at'类型。所以说我有2个文件夹,a =空; b =完整。我扫描两者。我存储值“b”。 “b”将是'at'类型。然后在我看来,我可以使用存储的值来仅显示那些已满的目录。 – DDDD

回答

0

这是什么工作:

@view = 'types' 

      #Loop through directories to see if files exist 
     #If files exist add directory name to @array 
     @directories = Array.new 
     @all_directories = Dir.glob("public/files/marketing/voip/#{@filter}/*") 
     @all_directories.each do |directory| 
      base_directory = Dir.glob("#{directory}/*") 

      unless base_directory.empty? 
       @directories.push(File.basename(directory)) 
      end 

此经过的每个目录,如果它不是EM pty将基本名称推送到我的数组中。

1

1)为什么你要检查File.exists?您只是将目录放在一边,因此结果中的每个项目确实存在。

2)

我想只存储空目录的@type。

@empty_dir_types = [] 

... 


    fname = "...." 

    if Dir.entries(fname).empty? 
    @empty_dir_types << File.basename fname 
    end 

或者,

@type = params[:type] 
@empty_dir_types = [] 

... 

    fname = "...." 

    if Dir.entries(fname).empty? 
    @empty_dir_types << @type 
    end 

或者,

@type = params[:type] 
@empty_dir_type = nil 

fname = "...." 

if Dir.entries(fname).empty? 
    @empty_dir_type = @type 
end 
+0

fname是我的目录吗?我不需要目录= Dir.glob(...?或者.each do | data |? – DDDD

+0

@DDDD:是的,fname是文件名的缩写,而在unix世界中,文件名意味着目录名或文件名。或者,使用你自己的变量名称:'directory =“#{directory_path} /#{@ filter} /#{@ type}”'Dir.entries类似于Dir.glob ,但是Dir.entries也返回隐藏文件,即以点开头的文件名,例如'.bash_profile'。你不需要调用each(),你可以直接写'if Dir.glob(directory).empty?'Dir .glob返回一个数组 - 如果它是空的,则该目录为空(接受隐藏文件)。 – 7stud

+0

这是否搜索主目录“directory_path”中的所有目录? – DDDD

相关问题