0

私は Paperclip で Rails 3.1 を使用しており、1 つのページに複数のファイルをアップロードするために Uploadify を実装しようとしています。Rails3-Paperclip-Uploadifyを含むさまざまなサンプルに従ってみました。

現在、UploadImage モデルと 1 対多の関係を持つ Upload モデルがあります。これは、これまでにビュー用に設定したものです。

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"=>"✓", "authenticity_token"=>"K1bSH/FO0Hjdum0aiNU45mHJXezXTiCgh9XVmk1jrZM=", "commit"=>"アップロードを送信", "action"=>"create", "controller"=>"upload_images"}

ご覧のとおり、ファイル データが送信されておらず、指定した scriptData も送信されていません。他の人のコードでは、uploadify 関数にスクリプトパラメータが使用されていることに気付きました。PHP フレームワークでは、保存を処理する .php ファイルを指します。私はペーパークリップを使用しているので、これを実装する方法がわかりませんでした...おそらくこれは私の問題ですか? 追加の詳細が必要な場合はお知らせください。

4

1 に答える 1

0

この質問を見て答えを見つけました:uploadify rails 3ファイルが選択された後は何も起こりません

私が推測したように、いくつかのイベントを送信ボタンに添付し、スクリプト パラメータをアップロード関数に追加する必要がありました。

だから私の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'

何時間も頭を悩ませた後、ついに機能し、理にかなっています! これが他の誰かに役立つことを願っています。

于 2012-06-29T17:11:41.123 に答える