Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery基本文件上传_Jquery_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Jquery基本文件上传

Jquery基本文件上传,jquery,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Jquery,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我一直在研究Ryan提出的名为Jquery文件上传的screencast pro。但是每次我输入图像时,它都不会被上传。我不确定我的代码在这里做错了什么。我正在使用谷歌,并试图上传它,但它似乎没有做任何事情 Javascript application.js //= require jquery //= require jquery_ujs //= require jquery-fileupload/basic //= require jquery-fileupload/vendor/tmpl

我一直在研究Ryan提出的名为Jquery文件上传的screencast pro。但是每次我输入图像时,它都不会被上传。我不确定我的代码在这里做错了什么。我正在使用谷歌,并试图上传它,但它似乎没有做任何事情

Javascript application.js

//= require jquery
//= require jquery_ujs
//= require jquery-fileupload/basic
//= require jquery-fileupload/vendor/tmpl
//= require_tree .
咖啡

jQuery ->
  $('#new_painting').fileupload
观点 _form.html.erb

<%= form_for @painting, :html => {:multipart => true} do |f| %>
  <div class="field">
    <%= f.hidden_field :galley_id %>
  </div>
  <div class="field">
    <%= f.label :image %><br />
    <%= f.file_field :image %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
模型


我的主要问题是,当上传任何图片时,它只是没有一个提交按钮,不知道如何使其工作,我是否错过了一些东西???

您可能成功地将文件上传到您的控制器操作中,但除了

@painting = Painting.create(params[:painting])
你需要做更多的事情,比如把上传的文件保存在服务器上的某个地方

def  create
  filename = params[:painting][:image].original_filename
  filetype = params[:painting][:image].content_type
  filedata = params[:painting][:image].read
  File.open("#{Rails.root.to_s}/images/#{filename}","wb") { |f| f.write(filedata) } 
  @painting = Painting.create(params[:painting])
end

这将提取上传的图像并将其写入服务器。如果您想在数据库中记录MIME类型,Content\u type也很方便。

因此,通过在S3Uploader>initialize方法的过期时间中添加时区(即utc)来解决这个问题

有关更多信息,请参阅:

def index
    @paintings = Painting.all
  end

  def show
    @painting = Painting.find(params[:id])
  end

  def new
    @painting = Painting.new
  end

  def create
    @painting = Painting.create(params[:painting])
  end

  def edit
    @painting = Painting.find(params[:id])
  end

  def update
    @painting = Painting.find(params[:id])
    if @painting.update_attributes(params[:painting])
      redirect_to paintings_url, notice: "Painting was successfully updated."
    else
      render :edit
    end
  end

  def destroy
    @painting = Painting.find(params[:id])
    @painting.destroy
    redirect_to paintings_url, notice: "Painting was successfully destroyed."
  end
  attr_accessible :image
  mount_uploader :image, ImageUploader
@painting = Painting.create(params[:painting])
def  create
  filename = params[:painting][:image].original_filename
  filetype = params[:painting][:image].content_type
  filedata = params[:painting][:image].read
  File.open("#{Rails.root.to_s}/images/#{filename}","wb") { |f| f.write(filedata) } 
  @painting = Painting.create(params[:painting])
end