2012-09-20 27 views
0

我是ROR新手。我想在選擇帶擴展名的文件後捕獲瀏覽按鈕的文件名。我想將文件名存儲到數據庫的File_name列中。請幫我做到這一點。是否有可能獲得存儲在File_name列中的文件的完整路徑而不僅僅是文件名?請建議我這樣做。我不想上傳文件。只是我想要一個文件名來存儲。如何捕獲瀏覽按鈕的文件名?

View(New) 
-------------- 
<div class="pro-data-imports"> 
    <%= form_for @pro_data_import do %> 

    <div class="field"> 
    Browse the file to upload:<br /> 
    <%= file_field_tag :File_name %> 
    </div> 

    <div class="actions"> 
    <%= submit_tag 'Import File' %> 
    </div> 
<% end %> 
</div> 


Controller 
---------- 

class Pro::DataImportsController < ApplicationController 
    before_filter :authenticate_user! 
    layout "layouts/enr/energy_master" 

    def index 
    @pro_data_imports = Pro::DataImport.all 
    end 

    def new 
    @pro_data_import = Pro::DataImport.new 
    @pro_data_import.updated_by = current_user 
    end 

    def create 
    @pro_data_import = Pro::DataImport.new(params[:pro_data_import]) 
    @pro_data_import.updated_by = current_user 

    end 
end 

Model 
------- 
I have File_name, File_validate, :updated_by Columns 
+1

我不認爲瀏覽器會給你完整的文件名路徑。它不應該。 – froderik

+0

是的,這是我從所有的反饋。謝謝你的答案。你能幫助我得到瀏覽器按鈕的文件名並將其保存到數據庫中。 – Vinay

+1

我想你可以用客戶端腳本和CSS做到這一點。使用css隱藏提交按鈕,並使用javascript從輸入字段中獲取值。我認爲只有Rails纔有可能。 – froderik

回答

1

我不知道你的意思是什麼。在您提到的想要了解的註釋中,如何使用兩個參數調用存儲過程。如果您的數據庫是SQL,請嘗試以下操作並根據您的規範更改您的字段名稱。

在模型中,創建一個方法

def update 
    parameters = [self.File_Name, File_Location] 
    parameters.map!{|p| ActiveRecord::Base.connection.quote p} 
    sql = "your store procedure name"(#{parameters.join(',')})" 
    ActiveRecord::Base.connection.execute(sql) 
end 

在你的控制器,

內,您的創建方法,調用Update方法。

def create 
    @update = Pro::DataImport.new(params[:pro_data_import]) 
    @pro_data_import.updated_by = current_user 
    @update.update 
    ......... 
    ... 
end 

我希望這會有所幫助。這只是一個示例。不要複製和粘貼.. :)

+0

我不知道你在控制器的第二行做了什麼。 :P – 2012-10-20 19:58:34

+1

哦,謝謝斯里蘭卡。它對我非常有用。 – Vinay