由于某些原因,使用与Ajax的CarrierWave宝石似乎并不适用于我.我做错了吗?我遵循253载波波导轨迹,它没有
AJAX,但在我的应用程序中,我需要使用AJAX.这是我的代码:
在图像文件字段中选择jpeg后的参数列表:
Parameters: {"item"=>{"remote_image_url"=>""}}
new.html.erb:
<%= form_for(@item,:url => create_item_path,:html => {:id => "create_item_form",:multipart => true}) do |f| %> <p> <%= f.file_field :image %> </p> <p> <%= f.label :remote_image_url,"or image URL" %><br /> <%= f.text_field :remote_image_url %> </p> <%= f.submit "Save",:id => "save_button" %> <% end %>
的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中有载波宝石,我没有改变任何应用程序/ uploader / image_uploader.rb.
感谢你的帮助!
解决方法
没有使用像Uploadify这样的图书馆就没有办法了.这是因为XMLHttpRequest(AJAX)标准不支持文件上传.唯一的方法,你真的可以假的是使用iFrame与Flash. Uploadify是这些选项中最好的,它具有最好的文档.这是客户端必须做的(浏览器). Uploadify真的不是一个红宝石宝石,它的Flash和js的集合允许浏览器“假”.
在服务器端,您可以使用carrierwave来支持上传,但是您需要一种从客户端获取他们的方法.这是一个非常相似的问题,应该给你你需要的指示.
Rails Carrier Wave with JQuery Uploader
希望这可以帮助,
乔