我已经阅读并遵循了关于这个主题的许多不同的问题和论坛,但有些事情是不对的。我想做一个简单的图像上传。我认为:
<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。根}/公共/上传目录。没有写入文件名或其他内容。当我注释掉上载函数定义时,我没有得到一个错误(这是我所期望的)。
在我的路由文件中,我尝试过
get 'beers/upload'
和
resources :beers
我已经尝试了很多不同的组合,但这是我见过的最基本的方法。
我在亚马逊Ubuntu EC2上使用ruby 2.1.5p273和rails 4.1.8版本。请告诉我哪里做错了。你的第二个表单没有提交按钮-你如何提交它?只选择一个文件是不会提交的。
如果您的操作应该是post请求,请尝试
post 'beers/upload', to: 'beers#upload'
或者更教条的
resources :beers do
collection do
post :upload
end
end