使用JQuery Uploader的Rails载波 [英] Rails Carrier Wave with JQuery Uploader
问题描述
我正在将Rails Carrier Wave与JQuery Upload一起使用,例如
I am using Rails Carrier Wave with JQuery Upload like on this rails tutorial, but I am having an error when I hit the upload button :
Error: SyntaxError: JSON.parse
任何建议/建议都应有尽有.
Any advise/suggestions are much appriciated.
推荐答案
为什么不尝试 Uploadify ?
将gem 'carrier_wave'
添加到您的Gemfile.
Add gem 'carrier_wave'
to you Gemfile.
将此代码保存到/lib/flash_session_cookie_middleware.rb
:
require 'rack/utils'
class FlashSessionCookieMiddleware
def initialize app, session_key = '_session_id'
@app = app
@session_key = session_key
end
def call env
if env['HTTP_USER_AGENT'] =~ /^(Adobe|Shockwave) Flash/
request = Rack::Request.new env
env['HTTP_COOKIE'] = [@session_key, request.params[@session_key]].join('=').freeze unless request.params[@session_key].nil?
env['HTTP_ACCEPT'] = "#{request.params['_http_accept']}".freeze unless request.params['_http_accept'].nil?
end
@app.call env
end
end
步骤3
编辑session_store.rb
并将此代码添加到文件末尾:
Step 3
Edit session_store.rb
and add this code to the end of file:
Rails.application.config.middleware.insert_before(
ActionDispatch::Session::CookieStore,
FlashSessionCookieMiddleware,
Rails.application.config.session_options[:key]
)
步骤4
下载上传并解压缩.
- 将
jquery.uploadify.v2.1.4.min.js
和swfobject.js
复制到/app/assets/javascripts
(如果使用Rails 3.1或更高版本);到/public/javascripts
如果您使用Rails 3.0或更早的版本. - 将
uploadify.swf
和cancel.png
复制到/app/assets/images/
或/public/images
. - 将
uploadify.css
复制到/app/assets/stylesheets/
或/public/stylesheets
.
- Copy
jquery.uploadify.v2.1.4.min.js
andswfobject.js
to/app/assets/javascripts
if you use Rails 3.1 or later; to/public/javascripts
if you use Rails 3.0 or an earlier version. - Copy
uploadify.swf
andcancel.png
to/app/assets/images/
or/public/images
. - Copy
uploadify.css
to/app/assets/stylesheets/
or/public/stylesheets
.
步骤6
编辑您的application.js并在下面插入:
Step 6
Edit your application.js and insert below:
//= require swfobject
//= require jquery.uploadify
步骤7
在您的上传页面中,添加以下内容:
Step 7
In you upload page, add this:
<input id="uploadify" name="uploadify" type="file"/>
步骤8
将此代码添加到您的上传脚本中:
Step 8
Add this code to you upload script:
$(document).ready(function() {
<% key = Rails.application.config.session_options[:key] %>
var uploadify_script_data = {};
var csrf_param = $('meta[name=csrf-param]').attr('content');
var csrf_token = $('meta[name=csrf-token]').attr('content');
uploadify_script_data[csrf_param] = encodeURI(encodeURIComponent(csrf_token));
uploadify_script_data['<%= key %>'] = '<%= cookies[key] %>';
$('#uploadify').uploadify({
uploader : '/assets/uploadify.swf',
script : '/photos',
cancelImg : '/images/cancel.png',
auto : true,
multi : true,
removeCompleted : true,
scriptData : uploadify_script_data,
onComplete : function(event, ID, fileObj, doc, data) {
}
});
});
步骤9
这样编写您的控制器:
Step 9
Write your controller like this:
def create
@photo = Photo.new image: params[:file_data]
@photo.save
end
注意:这已通过Uploadify 2.1.4进行了测试.
Note: This was tested with Uploadify 2.1.4.
这篇关于使用JQuery Uploader的Rails载波的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!