2009-07-07 162 views
0

我在控制器中有一段代碼,用IMG標記替換現有的HTML。代碼如下:有人可以告訴我這段代碼有什麼問題...?

render :update do |page| 
    page.replace_html "chart-div", "<img src=\"#{chart.chart_file}\"/>" #chart.chart_file is a path 
end 

無論出於何種原因,我不斷收到以下錯誤:

ActionController::RoutingError (No route matches "/public/charts/1_WEEKLY_ACTUAL_LINE.jpg" with {:method=>:get}): 

NO知道爲什麼它的假設我想路線的地方。似乎我必須在開始時有「公共」才能正確創建文件,但我必須刪除「公開」才能顯示圖像。有什麼想法嗎?是否有更加標準的機制來處理動態創建的圖像/項目?

最好。

注意:請不要「上傳」插件。所有文件都是由系統創建的,沒有上傳。

回答

3

添加文件時,您將其添加到文件系統,它位於RAILS_ROOT/public/charts/1_WEEKLY_ACTUAL_LINE.jpg

當你想顯示文件時,你需要一個指向它的URL。存儲在public目錄中的文件可通過它們相對於public目錄的路徑進行訪問。

您可以嘗試這樣的事:

class Chart < ActiveRecord::Base # or whatever the chart class is 
    def chart_url 
    chart_file.gsub(%r{^/public}, "") 
    end 
end 

或者,您可以將URL存儲在數據庫中,然後執行:

class Chart < ActiveRecord::Base # or whatever the chart class is 
    def chart_file 
    "/public#{chart_url}" 
    end 
end 
相關問題