2014-12-07 63 views
1

我試圖通過使用幫助器傳遞數組來獲取選項以顯示我的選擇標記。我是ROR的新手,我無法弄清楚這一點。我已經能夠使用我的助手傳入美國各州的數組,但它不會像我構建數組那樣使用我的數組。我測試了這個函數作爲一個ruby程序,它確實返回了我創建的數組,但是當我將它傳遞給options_for_select時它不起作用。沒有選項顯示。Ruby On Rails - 無法將數組傳遞給選擇窗體標記中的options_to_select

因此,這裏是我的幫助:

module ImagesHelper 
    def get_images 
     image_array = Array.new() 
     Dir.glob("../assets/images/*.jpg") do |item| 
      new = item.to_s 
      new = new.slice(17..new.length) 
      image_array << new 
     end 
     image_array 
    end 
end 

上面創建JPG文件在我的圖片名稱的陣列切斷目錄名文件夾中。

這裏是我的選擇標籤的形式代碼:

<div class="field"> 
<%= f.label :imageurl %><br /> 
<%= f.select(:imageurl, options_for_select(get_images)) %> 
</div> 

我使用Ruby 1.9.3和Rails 3

回答

0

這個怎麼樣?

module ImagesHelper 
    def get_images 
    image_array = Array.new() 
    Dir.glob("app/assets/images/*.jpg") do |item| 
     image_array << File.basename(item) 
    end 
    image_array 
    end 
end 

這與軌道4進行測試,所以你可能有路徑撥弄更多,但我認爲這應該這樣做。

還請注意使用File.basename,因此您不必在名稱中計數字符(該方法不會像這種方式那樣脆弱)。

另外還有一點:我不推薦使用new作爲變量名 - 即使在這種情況下沒有發生衝突,也可能是稍後會導致問題的事。 (當你不看的時候,有人喜歡偷偷摸摸地看你。)

它也可能讓其他程序員感到困惑,在函數中看到這麼多的new

這裏的紅寶石名單和Rails保留字:

http://www.rubymagic.org/posts/ruby-and-rails-reserved-words

+1

耶!謝謝!當我等待答案時,我改變了新的方式,因爲我意識到可能存在衝突,但這並沒有解決問題。推送File.basename(item)也沒有。但是將目錄從'../assets/images/*.jpg'更改爲'app/assets/images/*。jpg'就訣竅了! ROR不使用..來訪問下一個目錄嗎?無論如何,你爲我節省了幾個小時,繼續將我的頭靠在牆上。非常感謝! – autotheist 2014-12-07 11:55:19

+0

耶。您可以在'Dir.glob'行上面添加'p Dir.pwd',並將當前工作目錄打印到您的控制檯輸出中。 – 2014-12-07 11:59:56

相關問題