Eve*_*ner 12 ajax jquery ruby-on-rails carrierwave
出于某些原因,使用带有Ajax的CarrierWave gem似乎并不适合我.难道我做错了什么?我很好地遵循了253 CarrierWave Railscast,它在没有AJAX的情况下工作,但在我的应用程序中我需要使用AJAX.这是我的代码:
在图像文件字段中选择jpeg后的参数列表:
Parameters: {"item"=>{"remote_image_url"=>""}}
Run Code Online (Sandbox Code Playgroud)
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 %>
Run Code Online (Sandbox Code Playgroud)
的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;
});
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我在gemfile中有了carrierwave gem,而且我没有更改app/uploaders/image_uploader.rb中的任何内容.
感谢你的帮助!
The*_*hop 14
没有使用像Uploadify这样的库,没有什么可以做的.这是因为XMLHttpRequest(AJAX)标准不支持文件上载.你可以真正假装这个的唯一方法是使用带有Flash的iFrame.Uploadify是这些选项中最好的,它拥有最好的文档.这是必须在客户端(浏览器)完成的.Uploadify真的不是一个ruby gem,它是flash和js的集合,允许浏览器"伪造它".
在服务器端,您可以使用carrierwave来支持上传,但您需要一种方法从客户端获取它们.这是一个非常相似的问题,应该为您提供所需的说明.
希望这可以帮助,
乔
归档时间: |
|
查看次数: |
7141 次 |
最近记录: |