【问题标题】:Bizarrely unable to access elements in an ActionController::Parameters奇怪的是无法访问 ActionController::Parameters 中的元素
【发布时间】:2017-08-01 19:49:48
【问题描述】:

对已经编写好的 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">}

底部的两个打印语句为零。我的陈述没有深入研究双嵌套哈希并检索我想要获取的值。我尝试了所有我知道的语法组合,试图从哈希中获取这些值,但无济于事 - 每次我一无所获。我知道我的控制器中的“create”方法正在被调用——这就是我获取此打印输出的方式——只是我无法在“uploaded_planner”的哈希中获得任何值(也就是无法索引到测试变量)。我不知道如何以任何方式引用这些成员,这很糟糕,因为这些是我真正想要联系的成员。

这是官方的 ActionController 文档:

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

它声称我可以做到:

params[:key]

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

【问题讨论】:

  • 添加控制器,看看@uploaded_planners[0]是什么

标签: ruby-on-rails ruby parameters


【解决方案1】:
params[:uploaded_planner][:pic].original_filename

【讨论】:

猜你喜欢
  • 2019-12-27
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
  • 2021-03-02
  • 1970-01-01
  • 2022-06-15
相关资源
最近更新 更多