Ruby on rails 如何在控制器中设置实例变量并在视图中使用实例变量?

Ruby on rails 如何在控制器中设置实例变量并在视图中使用实例变量?,ruby-on-rails,ruby,arrays,ruby-on-rails-3.2,Ruby On Rails,Ruby,Arrays,Ruby On Rails 3.2,我需要知道一个目录是否为空,这样它们就不会显示 尝试存储:如果目录中有文件;然后我会在视图中调用它 def index @filter = params[:filter] @type = params[:type] @content = [] if @filter directory_path = "public/files/marketing/voip" directory = Dir.glob("#{directory_path}/#{@filter}/#{@typ

我需要知道一个目录是否为空,这样它们就不会显示

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

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 I的目录。

1)为什么要检查File.exe是否存在?您只是将目录全局化,因此结果中的每个项实际上都存在

(二)

我只想存储空目录的@type

这就是成功的原因:

@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

这会遍历每个目录,如果不是空的,则会将basename推送到我的数组。

您能提供更多的上下文,或者提供一个特定的问题吗?在控制器中创建的任何实例变量都可以在相应的视图中使用。我希望在web浏览器上显示不为空的目录。将显示其中包含文件的目录。在这里,我试图为每个非空目录存储目录的“at”类型。假设我有两个文件夹,a=空;b=满。我都扫描了。我存储值“b”。“b”应该是“at”类型。然后,在我看来,我可以使用存储的值只显示那些已满的@type目录。fname是我的目录吗?我是否不需要directory=Dir.glob(…?)或.each Do | data |?@dddddd:是的,fname是文件名的缩写,在unix世界中,文件名表示目录名或文件名。将要搜索的任何目录分配给fname。或者,使用您自己的变量名:
directory=“#{directory_path}/#{@filter}/#{@type}”
Dir.entries与Dir.glob类似,但Dir.entries也返回隐藏文件,即以点开头的文件名,例如
.bash\u profile
。您不需要调用each(),只需编写
如果Dir.glob(directory.empty)返回数组,则目录为空(接受隐藏文件)。此操作是否搜索主“目录路径”中的所有目录?
@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
@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