奇怪地无法访问ActionController :: Parameters中的元素

时间:2017-08-01 19:49:49

标签: ruby-on-rails ruby parameters

对已经编写的rails项目进行扩展。在erb文件中,我有:

<%= form_for @uploaded_planners[0], :url => method_path, :html => { :multipart => true } do |form| %> <%= form.file_field :pic %> <%=form.submit 'Upload'%> <% end %>

在适当的控制器中,我有:

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">}

底部的两个打印陈述是零。我的陈述没有深入挖掘双嵌套哈希并检索我想要获取的值。我尝试了所有语法方面的组合尝试从哈希中获取这些值,但无济于事 - 每次我什么也得不到。我知道&#39;创造&#39;正在调用我的控制器中的方法 - 它是我如何得到这个打印输出 - 它只是我无法在&#34; uploaded_planner&#34;的散列中得到任何值。 (又名不能索引到测试变量中)。我无法弄清楚如何以任何方式引用这些成员,这很糟糕,因为那些是我真正想要的成员。

这是官方的ActionController doc:

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

它声称我可以这样做:

params[:key]

我可以......第一次。但在那之后,我拥有的对象仍然是一个ActionController :: Parameters(由我的.class打印语句显示)但我不能做同样的索引来获取第二个哈希的成员。这是非常令人沮丧的,因为我在打印输出中看到了我需要的数据,但是无法获取该数据并对其进行操作(没有超级jank并且以某种方式读取打印输出......不是一种好方法)。关于这个的任何想法?

1 个答案:

答案 0 :(得分:2)

params[:uploaded_planner][:pic].original_filename