2017-08-01 47 views
0

製作的擴展,已經寫好的軌道項目。在一個ERB文件我有:奇怪的無法訪問在ActionController的元素::參數

​​

在相應的控制器我有:

def create 
    p params 
    print "\n" 
    testing = params[:uploaded_planner] 
    print testing.class 
    print "\n" 
    print testing 
    print "\n" 
    print testing['@original_filename'] 
    print testing[:original_filename] 
    print "\n" 
end 

和:

def plan 
    @uploaded_planners = UploadedPlanner.all #there are two i inserted via rails console.. 
end 

那些打印輸出是

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"UxgdziS9PwY/SAaOMj4upXzSTf5brOT4R9x+paMNNlxehYwY34OT7hvdGJXwvK/cffPIjYOwdf1h+MndJh6LBg==", "uploaded_planner"=>{"pic"=>#<ActionDispatch::Http::UploadedFile:0x007f9b9b3bc5e8 @tempfile=#<Tempfile:/var/folders/hc/67y08p7s3ws6rsjl5rlxk3f00000gn/T/RackMultipart20170801-25372-godqfg.xlsx>, @original_filename="AF_CSX_DISTRIBUTE_NUMBERS.xlsx", @content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", @headers="Content-Disposition: form-data; name=\"uploaded_planner[pic]\"; filename=\"AF_CSX_DISTRIBUTE_NUMBERS.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n">}, "commit"=>"Upload", "controller"=>"viacom", "action"=>"create"} 

ActionController::Parameters 

{"pic"=>#<ActionDispatch::Http::UploadedFile:0x007f9b9d529190 @tempfile=#<Tempfile:/var/folders/hc/67y08p7s3ws6rsjl5rlxk3f00000gn/T/RackMultipart20170801-25372-baavaj.xlsx>, @original_filename="AF_CSX_DISTRIBUTE_NUMBERS.xlsx", @content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", @headers="Content-Disposition: form-data; name=\"uploaded_planner[pic]\"; filename=\"AF_CSX_DISTRIBUTE_NUMBERS.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n">} 

底部的兩個打印語句是零。我的語句不挖掘雙嵌套散列,並檢索我試圖得到的值。我嘗試了每種組合的語法組合,我知道嘗試從散列中獲得這些值,但無濟於事 - 每次我什麼都得不到。我知道在我的控制器中的「create」方法被調用 - 這是我如何得到這個打印輸出 - 它只是我不能在「uploaded_planner」的哈希得到任何值(又名不能索引到測試變量)。我無法弄清楚如何以任何方式引用這些成員,這些都是我真正想要的成員。

下面是官方ActionController的DOC:

http://api.rubyonrails.org/v4.2/classes/ActionController/Parameters.html#method-i-extract-21

它聲稱,我可以這樣做:

params[:key] 

,我可以......第一次。但在那之後,我有對象仍然是一個ActionController的::參數(如我的.class print語句所示),但我不能這樣做,同樣的索引,以獲得第二個散列的成員。這是非常令人沮喪,因爲我知道我需要在打印輸出的數據,但無法獲得這些數據,並對其進行操作(沒有去超級JANK和讀取打印輸出莫名其妙......不是一個好辦法做到的事情)。對此有何想法?

+0

添加控制器,看看有什麼'@uploaded_planners [0]' –

回答

2
params[:uploaded_planner][:pic].original_filename 
+0

打印語句中這似乎是一個字符串,所以也許'[ 「PIC」]'來代替。 –

+1

價值觀的ActionController的::參數由符號和字符串鍵使用兩種: >您可以使用獲取的ActionController ::參數值:鍵或「關鍵」。 (http://api.rubyonrails.org/classes/ActionController/Parameters.html) – lightalloy