2017-08-01 14 views
0

すでに書かれているレールプロジェクトを拡張しています。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">} 

ある私が持って適切なコントローラで

​​

:私はERBファイルで

下の2つのprintステートメントはnilです。私のステートメントは、二重ネストされたハッシュを掘り下げずに、私が得ようとしている値を取得しません。私はハッシュからそれらの値に達することを試みるために知っている構文の賢明な組み合わせを試しましたが、何も得られないたびに役に立たなくなりました。私はコントローラの「作成」メソッドが呼び出されていることを知っています。このプリント出力をどのように取得しているのですか?「uploaded_planner」のハッシュで値を取得できません(テスト変数にインデックスを付けることはできません)。どのようにしてメンバーを参照するのか、私が本当に知りたいメンバーであるように、私は想像することができません。ここで

は公式ActionControllerドキュメントです:

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

それは私が行うことができます主張している:

params[:key] 

そして私ことができます...初めて。しかしその後、私が持っているオブジェクトはまだActionController :: Parameters(私の.class print文で示されている)ですが、2番目のハッシュのメンバを取得するためには全く同じインデクシングを行うことができません。プリントアウトに必要なデータは見えますが、そのデータを取得して操作することはできません(スーパージャンクと印刷出力を何とかしなくても良い方法です)。これに関するアイデア?

+0

ではなく、 'そうかもしれない' [ "PIC"]、文字列のように見えるのprint文では[0] '' –

答えて

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

@uploaded_plannersだものを見るために、コントローラを追加します。 –

+1

ActionController :: Parametersの値は、シンボルキーと文字列キーの両方でアクセスできます。 >:keyまたは "key"のいずれかを使用してActionController :: Parametersの値を取得できます。 (http://api.rubyonrails.org/classes/ActionController/Parameters.html) – lightalloy

関連する問題