我正在使用Rails 3.1和Paperclip并尝试在单个页面上实现上传以进行多个文件上传。我尝试了以下各种示例,包括:Rails3-Paperclip-Uploadify
目前我有一个与我的UploadImage模型有一对多关系的上传模型 - 这就是我目前为我的观点设置的内容:
UploadImages / new.html.erb
<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" %>
<%= javascript_include_tag "swfobject.js", "jquery.uploadify.v2.1.0.js" %>
<script type="text/javascript" charset="utf-8">
<%- session_key = Rails.application.config.session_options[:key] -%>
$(document).ready(function()
{
// Create an empty object to store our custom script data
var uploadify_script_data = {};
// Fetch the CSRF meta tag data
var csrf_token = $('meta[name=csrf-token]').attr('content');
var csrf_param = $('meta[name=csrf-param]').attr('content');
// Now associate the data in the config, encoding the data safely
uploadify_script_data[csrf_token] = encodeURI(encodeURI(csrf_param));
$('.uploadify').uploadify
({
uploader : '/uploadify/uploadify.swf',
cancelImg : '/uploadify/cancel.png',
multi : true,
auto : false,
onComplete : function(event, queueID, fileObj, response, data)
{
var dat = eval('(' + response + ')');
$.getScript(dat.upload);
},
scriptData : {
'_http_accept': 'application/javascript',
'format' : 'json',
'_method': 'post',
'<%= session_key %>' : encodeURIComponent('<%= u cookies[session_key] %>'),
'authenticity_token': encodeURIComponent('<%= u form_authenticity_token %>'),
'upload_id' : '<%= @upload.id %>'
}
});
});
</script>
<%= form_for @upload.upload_images.build, :html => { :class => "upload", :multipart => true } do |f| %>
<%= f.file_field :image, :class => "uploadify" %>
<%= submit_tag "Submit Upload", :disable_with => "Uploading", :class => "submit"%>
<% end %>
我看到uploadify flash按钮,我选择了几个文件并提交,但这是我在params中看到的所有内容:
{ “UTF8”=&gt; “中✓”, “authenticity_token”=&gt; “中K1bSH / FO0Hjdum0aiNU45mHJXezXTiCgh9XVmk1jrZM =”, “commit”=&gt;“提交上传”,“操作”=&gt;“创建”, “控制器”=&gt; “中upload_images”}
正如您所看到的,没有文件数据被发送,甚至我指定的scriptData也没有被发送,我注意到其他人的代码使用脚本参数进行uploadify功能。在PHP框架中,他们将其指向处理保存的.php文件。我正在使用Paperclip所以我不确定如何实现这个...也许这是我的问题?如果您需要任何其他详细信息,请与我们联系。
答案 0 :(得分:0)
我通过查看这个问题找到答案:uploadify rails 3 nothing happens after the file is chosen
我必须将一些事件附加到我的提交按钮,并将脚本参数添加到uploadify函数中,如我所推测的那样。
所以对于我的config / routes.rb中的初学者我需要添加:
post "upload_images/create"
在我看来,我补充说:
$('#submit').click(function(event){
event.preventDefault();
});
$('#submit').click(function(event){
event.preventDefault();
$('.uploadify').uploadifyUpload();
});
最后我将脚本参数添加到我的初始uploadify函数调用中:
script : '/upload_images/create'
经过几个小时的打击我的头后,它终于正常工作并且有意义!希望这有助于其他人。