对已经编写的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并且以某种方式读取打印输出......不是一种好方法)。关于这个的任何想法?
答案 0 :(得分:2)
params[:uploaded_planner][:pic].original_filename