2011-08-20 180 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中獲得的字符串。 乾杯