出於某種原因,使用帶有Ajax的CarrierWave gem似乎不適合我。難道我做錯了什麼?我很好地跟蹤了253 CarrierWave Railscast,它的工作原理沒有AJAX,但在我的應用程序中,我需要使用AJAX。這裏是我的代碼:Ruby on Rails CarrierWave gem是否可以使用Ajax?
在圖像文件中的字段選擇JPEG後PARAMS列表:
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的carrierwave寶石,我還沒有在app /上傳/ image_uploader.rb改變任何東西。
感謝您的幫助!
那麼你會給我我的賞金嗎? – TheDelChop 2012-02-28 02:07:40
正如在下面的其他答案中指出的那樣,除非您需要支持舊版瀏覽器[XHR2](http://caniuse.com/#feat=xhr2)已經支持'FormData'一段時間了。值得嘗試的是,如果它可用於您並且只能回退到其他庫以獲得傳統支持。 – mczepiel 2014-11-15 19:02:09
此時此答案已過時。 HTML5具有FormData和File API,允許通過AJAX上傳文件。請參閱[這裏](http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously/8758614#8758614)瞭解更多信息。 – 2015-09-07 19:01:32