自定义资源路由和上传



我已经阅读并遵循了关于这个主题的许多不同的问题和论坛,但有些事情是不对的。我想做一个简单的图像上传。我认为:

<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

相关内容

  • 没有找到相关文章

最新更新