我已阅读并关注此主题的许多不同问题和论坛,但有些事情是不对的。我正在尝试做一个简单的图片上传。我认为:
<div class="row">
<div class="col-sm-6">
<%= form_tag("/beers/newCal", method: "get", multipart: true) do %>
<%= label_tag(:q, "Enter date (dd/mm): ") %>
<%= text_field_tag(:date) %>
<br/>
<%= label_tag(:q, "Enter event name: ") %>
<%= text_field_tag(:event) %>
<br/>
<%= submit_tag("Create Calendar Event") %>
<br /> <br />
<% end %>
<%= form_tag("/beers/upload", multipart: true) do %>
<%= file_field_tag 'picture' %>
<% end %>
</div>
并在我的控制器中
def upload
uploaded_io = params[:picture]
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
end
我可以选择要上传的图片,但不会保存在#{Rails.root} / public / uploads目录中。文件名未写入或任何内容。当我注释掉上传函数定义时,我没有收到错误(我预期的错误)。
在我的路线文件中,我尝试了
get 'beers/upload'
和
resources :beers
我尝试了很多不同的组合,但这是我看到的最基本的方式。
我在Amazon Ubuntu EC2上使用ruby版本2.1.5p273和rails版本4.1.8。请告诉我我做错了什么。
答案 0 :(得分:0)
您的第二个表单中没有提交按钮 - 您如何提交?只选择一个文件不会提交。
此外,您的操作应该是帖子请求,请尝试
post 'beers/upload', to: 'beers#upload'
甚至更教条</ p>
resources :beers do
collection do
post :upload
end
end