【发布时间】: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