2011-08-20 164 views
0

first..sorry我的英语不好,我的大菜鸟question..the问题是内部的文本(从名称的文件)...问题秀红宝石鞋

我需要创建一个小鞋子应用不是显示了Excel一个文件夹中的文件(这只是其中的一部分)......我这样定义一个方法:

def show_proov 
    files = Dir.new(personal_folder).entries 
    xlsxfiles = files.find_all {|file| file.include?('.xlsx') }.map do |file| file.scan(/^\w+/) end 
end 

,如果我表现出一个警报it..it工作,并显示文件...越远越好: now..the问题是比我希望迭代这个名称,并创建一个菜单..当我尝试它我得到一个错误相关的“坏编码”(抱歉,但我已经尝试重新创建此代码,但我从来没有得到这个消息再次)

well..no问题...也许一个list_box可以做的工作:

我的鞋子里面程序,我定义list_box:项目=> show_proov 做that..nothing是渲染窗口内...不显示任何

相同的,如果我使用

@items=show_proov 
#@items.class = array 
list_box :items => @items 

发生它并没有多大意义,但我必须有尝试...

感谢阅读并寻求帮助! :D

+0

你能告诉我们'@ items.inspect'吗?我认为这不会是你想要的;它将是一串字符串数组。调用'scan'的目的是什么?我认为如果它们中有空格,它将会删除部分文件名。 –

回答

0

我认为你的问题可能是你的show_proov函数返回一个数组数组。

[["file1"], ["file2"], ["file3"]] 

这是因为String.scan返回一个数组。试着增加。首先,像这样:

xlsxfiles = files.find_all {|file| file.include?('.xlsx') }.map do |file| file.scan(/^\w+/).first end 

那么结果将是:

["file1", "file2", "file3"] 
0

,如果你从Excel得到somethinbg编码是不同的,所以在使用

.force_encoding("UTF-8") 

在操作之前从ecel中获得的字符串。 干杯