Ruby on Rails CarrierWave gem是否可以与Ajax一起使用?
出于某些原因,使用带有Ajax的CarrierWave gem似乎并不适合我。 难道我做错了什么? 我很好地遵循了253 CarrierWave Railscast,它没有AJAX,但在我的应用程序中我需要使用AJAX。 这是我的代码:
在图像文件字段中选择jpeg后的参数列表:
Parameters: {"item"=>{"remote_image_url"=>""}}
new.html.erb:
create_item_path, :html => {:id => "create_item_form", :multipart => true}) do |f| %>
"save_button" %>
的application.js
$("#create_item_form").submit(function() { $.ajax({ type: "POST", url: $(this).attr("action"), dataType: "script", data: $("#destination_item").sortable('serialize') + "&" + $(this).serialize() }); return false; });
item.rb的
class Item < ActiveRecord::Base attr_accessible :description, :image, :remote_image_url belongs_to :user has_many :item_sub mount_uploader :image, ImageUploader end
schema.rb
create_table "item", :force => true do |t| t.integer "user_id" t.string "title" t.string "image" t.datetime "created_at" t.datetime "updated_at" end
我在gemfile中有了carrierwave gem,而且我没有更改app / uploaders / image_uploader.rb中的任何内容。
感谢你的帮助!
没有使用像Uploadify这样的库,没有什么可以做的。 这是因为XMLHttpRequest(AJAX)标准不支持文件上载。 你可以真正假装这个的唯一方法是使用带有Flash的iFrame。 Uploadify是这些选项中最好的,它拥有最好的文档。 这是必须在客户端(浏览器)完成的。 Uploadify真的不是一个ruby gem,它是flash和js的集合,允许浏览器“伪造它”。
在服务器端,您可以使用carrierwave来支持上传,但是您需要一种方法从客户端获取它们。 这是一个非常相似的问题,应该为您提供所需的说明。
使用JQuery上传器的Rails载波
希望这可以帮助,
乔
您现在可以使用FormData()通过ajax上传文件而无需使用外部库
参见: LINK 1 & LINK 2
你不能通过像这样的Ajax上传文件。 你需要这样的东西: http : //www.uploadify.com/