我正在尝试从上传的文件中获取 original_filename 和其他内容。
视图中的代码如下所示:
<%= form_for(@datafile, url: user_data_files_path) do |f| %>
<%= f.file_field :data%>
<%= f.submit "Upload file", class: "btn btn-large btn-primary" %>
<% end %>
调试控制台中的参数值为:
{"utf8"=>"✓",
"authenticity_token"=>"Z4suAyN3zOpz1qBKllaDs3L4flz6Rm6HnN0CIdJvmcE=",
"data_file"=>{"data"=>#<ActionDispatch::Http::UploadedFile:0x007ff46b74e390 @tempfile=#<Tempfile:/var/folders/gf/lft827zj55b5wdj3208vpsy40000gn/T/RackMultipart20130803-635-q6wtb6>,
@original_filename="application.html.erb",
@content_type="application/octet-stream",
@headers="Content-Disposition: form-data; name=\"data_file[data]\"; filename=\"application.html.erb\"\r\nContent-Type: application/octet-stream\r\n">},
"commit"=>"Upload file",
"user_id"=>"1"}
我正在尝试在我的控制器中检索诸如 original_filename 和数据之类的内容:
def create
@datafile = DataFile.new
uploaded_io = params[:data_file]
flash[:error]= '' + uploaded_io[:@original_filename]
redirect_to new_user_data_file_url
end
但我得到一个错误:在线no implicit conversion of nil into String
。flash[:error]
我试图通过以下方式访问:
uploaded_io[:original_filename]
这给了我同样的错误,或者
uploaded_io.original_filename
我得到NoMethodError
了我看到的奇怪的事情是它flash[:error]= '' + uploaded_io.to_s
给了我 data_file 哈希,所以..我不明白发生了什么。
有人可以帮我解决这个问题吗?