Rails 3.1 Paperclip jQuery fileupload

前端之家收集整理的这篇文章主要介绍了Rails 3.1 Paperclip jQuery fileupload前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在寻找一种使用 PaperclipjQuery fileupload设置Ruby on Rails 3.1的方法.查看 jQuery fileupload页面的教程,我得到了系统设置,但我找不到一种方法来使回形针处理上传文件.

这就是我的(简而言之):

# model
has_attached_file :photo ...

# view
= form_for @user,:html => {:multipart => true} do |f|
  f.file_field :photo,:multiple => true
  f.submit

# controller
def create
  @user = User.new params[:user]
  if @user.save
    render :json => [...]
end

如果我检查提交的数据,我得到params [:user]和params [:user] [:photo]中的所有用户属性,它是ActionDispatch :: Http :: UploadedFile.当@ user.save被调用时,图像不会被处理或保存.

一个线索,教程或解决方案将不胜感激!

解决方法

在这个问题困扰了一段时间后,我发现问题出现在:multipart =>因为表单域名从用户[photo]更改为用户[photo] [],因此将true添加到f.file_field.

使用单独的页面附加照片

我想要有一个单独的页面上传多个文件到一个记录(另一个用于编辑用户属性).这看起来像我的临时解决方案,但它的作品.而不是f.form_field:photo,:multipart => true我使用form_field_tag’user [photo]’,:multiple =>在视野中真实.

我的代码如下所示:

## app/model/user.rb
has_attached_file :photo

def to_fileupload_json
  {
    "name" => photo_file_name,"size" => photo_file_size,...
  }
end

## app/views/photos/new.html.haml
= form_for @user,:url => users_path,:html => { :multipart => true } do |f|
  #fileupload
    = file_field_tag 'user[photo]',:multiple => true
    = f.submit

= javascript_include_tag "jquery.fileupload.js"
# require all other JS files needed for the plugin (jQuery,jQuery UI,...)
= stylesheet_link_tag "jquery.fileupload-ui.css"
= render :partial => "jquery_file_templates" # partial with jQuery templates for responses 

:javascript
  $(function () {
      uploader = $('#fileupload').fileupload()
  }


## app/controllers/users_controller.rb
def create
  @user = User.create params[:user]
end

如果有人知道这样做的更好的方法(正确的方法),请告诉我们!

使用fields_for

根据应用程序的结构,您可以考虑使用fields_for.

在这种情况下,您必须:

将accept_nested_attributes_for:照片添加到(用户)模型中
>添加一个方法photos_attribues =(属性)到您的(用户)模型,并处理记录创建
>在用户的新方法中创建照片的时间记录3.times {@ user.photos.build}

例:

def photos_attribues=(attributes)
  attributes.each do |key,value|
    photo = Photo.create :photo => value,...
  end
end

免责声明:上述代码被简化/重写,使其更容易理解.我可能会在删除不需要的东西时犯错误.再次 – 我并不确定这是解决这个问题的正确方法.建议和改进是更受欢迎!

猜你在找的jQuery相关文章