2014-05-17 35 views
0

我在rails應用程序的ruby中使用文件上傳。當文件上傳時,我想爲其他人建立鏈接,以便他們也可以下載該文件。我在文件附件的assets文件夾中有一個名爲job_attachments的文件夾。我想知道如何使用jQuery獲取job_attachments的路徑。如何在rails上使用jquery獲取資產路徑

我做這樣的事情在我的控制器:

def uploadattachment 
    if(params[:job][:uploaded_data]) 
     uploaded_io=params[:job][:uploaded_data] 
     File.open(Rails.root.join('app/assets', 'job_attachments', uploaded_io.original_filename), 'wb') do |f| 
       f.write(uploaded_io.read) 
     end 

    respond_to do |format| 
     format.json {render :layout=>false , :json => uploaded_io.original_filename}  
    end 
end 

回答

2

你可能不希望把內容上傳到你的資產的文件夾。資產是用於創建您應用程序的一部分的。此外,客戶不能直接訪問app/assets。我假設你希望人們能夠下載這些文件?

在公共(「上傳」,也許)下創建另一個文件夾,並將文件放在那裏。

要在jQuery中獲取路徑,只需在上傳文件時從控制器返回路徑即可。你可能想要打開一個散列,而不是一個字符串,因爲在jQuery中處理起來要容易一些。

def uploadattachment 
    if(params[:job][:uploaded_data]) 
     uploaded_io=params[:job][:uploaded_data] 
     File.open(Rails.root.join('public', 'uploads', 'job_attachments', uploaded_io.original_filename), 'wb') do |f| 
      f.write(uploaded_io.read) 
     end 

     respond_to do |format| 
     format.json {render :layout=>false , :json => {:path => File.join('uploads', uploaded_io.original_filename}}  
     end 
    end 
end 
+0

這些文件在jobs_attachment文件夾中完美上傳。爲什麼我需要將它們上傳到公共目錄中? – Randhir

+0

已更新的答案。 'app/assets'將在開發中工作,但在生產模式下,您無法直接訪問這些文件。他們被預編譯成「public/assets」。這對於部署後添加的任何內容都不會發生。 –

相關問題