Jquery Rails 3 Blueimp文件上载服务器端错误

Jquery Rails 3 Blueimp文件上载服务器端错误,jquery,ruby-on-rails,file-upload,Jquery,Ruby On Rails,File Upload,我正在使用Blueimp Jquery文件上传插件和Rails 3。 # POST /templates def create file_list = { :error => "some error text" } respond_to do |format| format.json { render :json => file_list } end end $('#fileupload').fileupload({

我正在使用Blueimp Jquery文件上传插件Rails 3。

# POST /templates
def create
    file_list = {
       :error => "some error text"
    }

    respond_to do |format|
       format.json { render :json => file_list }
    end
end
$('#fileupload').fileupload({
    autoUpload: true,
    dropZone: null,
    add: function (e, data) {
            data.submit();
    }
});

$('#fileupload').bind('fileuploaddone', function (e, data) {
});
<form method="post" enctype="multipart/form-data" action="/admin/templates?locale=uk" accept-charset="UTF-8">
       <script id="template-upload" type="text/x-jquery-tmpl">
            <tr class="template-upload{{if error}} ui-state-error{{/if}}">
                {{if error}}
                        <td class="ext"></td>
                        <td class="code"></td>
                    <td class="error" colspan="4">Помилка:
                        {{if error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>
                    <td class="cancel"><button>Відмінити завантаження</button></td>
                {{else}}
                        <td class="ext"></td>
                        <td class="code"></td>
                        <td class="name"></td>
                        <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                    <td class="link_show_template">${link_show_template}</td>
                    <td class="progress"><div></div></td>
                    <td class="start"><button>Start</button></td>
                {{/if}}
            </tr>
        </script>
        <script id="template-download" type="text/x-jquery-tmpl">
            <tr class="template-download{{if error}} ui-state-error{{/if}}">
                {{if error}}
                    <td></td>
                    <td class="ext">${ext}</td>
                    <td class="code">s${code}</td>
                    <td class="name" colspan="2">Error:
                        {{if error === 1}}text
                        {{else error === 2}}text
                        {{else error === 3}}text
                        {{else error === 4}}text
                        {{else error === 5}}text
                        {{else error === 6}}text
                        {{else error === 7}}text
                        {{else error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'uploadedBytes'}}text
                        {{else error === 'emptyResult'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>

                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{else}}
                    <td class="ext">${ext}</td>
                    <td class="code">${code}</td>
                    <td class="name">
                        <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
                    </td>
                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{/if}}
                <td class="delete">
                    <button data-type="${delete_type}" data-url="${delete_url}">delete</button>
                </td>
            </tr>
        </script>
</form>
我想从服务器向客户端发送一条错误消息

服务器操作是:

# POST /templates
def create
    file_list = {
       :error => "some error text"
    }

    respond_to do |format|
       format.json { render :json => file_list }
    end
end
$('#fileupload').fileupload({
    autoUpload: true,
    dropZone: null,
    add: function (e, data) {
            data.submit();
    }
});

$('#fileupload').bind('fileuploaddone', function (e, data) {
});
<form method="post" enctype="multipart/form-data" action="/admin/templates?locale=uk" accept-charset="UTF-8">
       <script id="template-upload" type="text/x-jquery-tmpl">
            <tr class="template-upload{{if error}} ui-state-error{{/if}}">
                {{if error}}
                        <td class="ext"></td>
                        <td class="code"></td>
                    <td class="error" colspan="4">Помилка:
                        {{if error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>
                    <td class="cancel"><button>Відмінити завантаження</button></td>
                {{else}}
                        <td class="ext"></td>
                        <td class="code"></td>
                        <td class="name"></td>
                        <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                    <td class="link_show_template">${link_show_template}</td>
                    <td class="progress"><div></div></td>
                    <td class="start"><button>Start</button></td>
                {{/if}}
            </tr>
        </script>
        <script id="template-download" type="text/x-jquery-tmpl">
            <tr class="template-download{{if error}} ui-state-error{{/if}}">
                {{if error}}
                    <td></td>
                    <td class="ext">${ext}</td>
                    <td class="code">s${code}</td>
                    <td class="name" colspan="2">Error:
                        {{if error === 1}}text
                        {{else error === 2}}text
                        {{else error === 3}}text
                        {{else error === 4}}text
                        {{else error === 5}}text
                        {{else error === 6}}text
                        {{else error === 7}}text
                        {{else error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'uploadedBytes'}}text
                        {{else error === 'emptyResult'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>

                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{else}}
                    <td class="ext">${ext}</td>
                    <td class="code">${code}</td>
                    <td class="name">
                        <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
                    </td>
                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{/if}}
                <td class="delete">
                    <button data-type="${delete_type}" data-url="${delete_url}">delete</button>
                </td>
            </tr>
        </script>
</form>
我的客户端js是:

# POST /templates
def create
    file_list = {
       :error => "some error text"
    }

    respond_to do |format|
       format.json { render :json => file_list }
    end
end
$('#fileupload').fileupload({
    autoUpload: true,
    dropZone: null,
    add: function (e, data) {
            data.submit();
    }
});

$('#fileupload').bind('fileuploaddone', function (e, data) {
});
<form method="post" enctype="multipart/form-data" action="/admin/templates?locale=uk" accept-charset="UTF-8">
       <script id="template-upload" type="text/x-jquery-tmpl">
            <tr class="template-upload{{if error}} ui-state-error{{/if}}">
                {{if error}}
                        <td class="ext"></td>
                        <td class="code"></td>
                    <td class="error" colspan="4">Помилка:
                        {{if error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>
                    <td class="cancel"><button>Відмінити завантаження</button></td>
                {{else}}
                        <td class="ext"></td>
                        <td class="code"></td>
                        <td class="name"></td>
                        <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                    <td class="link_show_template">${link_show_template}</td>
                    <td class="progress"><div></div></td>
                    <td class="start"><button>Start</button></td>
                {{/if}}
            </tr>
        </script>
        <script id="template-download" type="text/x-jquery-tmpl">
            <tr class="template-download{{if error}} ui-state-error{{/if}}">
                {{if error}}
                    <td></td>
                    <td class="ext">${ext}</td>
                    <td class="code">s${code}</td>
                    <td class="name" colspan="2">Error:
                        {{if error === 1}}text
                        {{else error === 2}}text
                        {{else error === 3}}text
                        {{else error === 4}}text
                        {{else error === 5}}text
                        {{else error === 6}}text
                        {{else error === 7}}text
                        {{else error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'uploadedBytes'}}text
                        {{else error === 'emptyResult'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>

                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{else}}
                    <td class="ext">${ext}</td>
                    <td class="code">${code}</td>
                    <td class="name">
                        <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
                    </td>
                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{/if}}
                <td class="delete">
                    <button data-type="${delete_type}" data-url="${delete_url}">delete</button>
                </td>
            </tr>
        </script>
</form>
我也有这样的html:

# POST /templates
def create
    file_list = {
       :error => "some error text"
    }

    respond_to do |format|
       format.json { render :json => file_list }
    end
end
$('#fileupload').fileupload({
    autoUpload: true,
    dropZone: null,
    add: function (e, data) {
            data.submit();
    }
});

$('#fileupload').bind('fileuploaddone', function (e, data) {
});
<form method="post" enctype="multipart/form-data" action="/admin/templates?locale=uk" accept-charset="UTF-8">
       <script id="template-upload" type="text/x-jquery-tmpl">
            <tr class="template-upload{{if error}} ui-state-error{{/if}}">
                {{if error}}
                        <td class="ext"></td>
                        <td class="code"></td>
                    <td class="error" colspan="4">Помилка:
                        {{if error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>
                    <td class="cancel"><button>Відмінити завантаження</button></td>
                {{else}}
                        <td class="ext"></td>
                        <td class="code"></td>
                        <td class="name"></td>
                        <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                    <td class="link_show_template">${link_show_template}</td>
                    <td class="progress"><div></div></td>
                    <td class="start"><button>Start</button></td>
                {{/if}}
            </tr>
        </script>
        <script id="template-download" type="text/x-jquery-tmpl">
            <tr class="template-download{{if error}} ui-state-error{{/if}}">
                {{if error}}
                    <td></td>
                    <td class="ext">${ext}</td>
                    <td class="code">s${code}</td>
                    <td class="name" colspan="2">Error:
                        {{if error === 1}}text
                        {{else error === 2}}text
                        {{else error === 3}}text
                        {{else error === 4}}text
                        {{else error === 5}}text
                        {{else error === 6}}text
                        {{else error === 7}}text
                        {{else error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'uploadedBytes'}}text
                        {{else error === 'emptyResult'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>

                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{else}}
                    <td class="ext">${ext}</td>
                    <td class="code">${code}</td>
                    <td class="name">
                        <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
                    </td>
                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{/if}}
                <td class="delete">
                    <button data-type="${delete_type}" data-url="${delete_url}">delete</button>
                </td>
            </tr>
        </script>
</form>

{{if error}}
Помилка:
{{if error==='maxFileSize'}}text
{{else error==='minFileSize'}}text
{{else error==='acceptFileTypes'}}text
{{else error==='maxNumberOfFiles'}}text
{{else error==='errorFileFormat'}}文本
{{else}}${error}
{{/if}
Відмінити завантаження
{{else}
${sizef}
${link\u setup\u template}
${link\u show\u template}
开始
{{/if}
{{if error}}
${ext}
s${code}
错误:
{{如果错误===1}}文本
{{else error==2}}文本
{{else error==3}}文本
{{else error==4}}文本
{{else error==5}}文本
{{else error==6}}文本
{{else error==7}}文本
{{else error==='maxFileSize'}}text
{{else error==='minFileSize'}}text
{{else error==='acceptFileTypes'}}text
{{else error==='maxNumberOfFiles'}}text
{{else error==='uploadedBytes'}}文本
{{else error==='emptyResult'}}文本
{{else error==='errorFileFormat'}}文本
{{else}}${error}
{{/if}
${sizef}
${link\u setup\u template}
${link\u show\u template}
{{else}
${ext}
${code}
${sizef}
${link\u setup\u template}
${link\u show\u template}
{{/if}
删除
但是我的带有error属性的服务器端json对象不会在客户端引发错误行为。

# POST /templates
def create
    file_list = {
       :error => "some error text"
    }

    respond_to do |format|
       format.json { render :json => file_list }
    end
end
$('#fileupload').fileupload({
    autoUpload: true,
    dropZone: null,
    add: function (e, data) {
            data.submit();
    }
});

$('#fileupload').bind('fileuploaddone', function (e, data) {
});
<form method="post" enctype="multipart/form-data" action="/admin/templates?locale=uk" accept-charset="UTF-8">
       <script id="template-upload" type="text/x-jquery-tmpl">
            <tr class="template-upload{{if error}} ui-state-error{{/if}}">
                {{if error}}
                        <td class="ext"></td>
                        <td class="code"></td>
                    <td class="error" colspan="4">Помилка:
                        {{if error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>
                    <td class="cancel"><button>Відмінити завантаження</button></td>
                {{else}}
                        <td class="ext"></td>
                        <td class="code"></td>
                        <td class="name"></td>
                        <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                    <td class="link_show_template">${link_show_template}</td>
                    <td class="progress"><div></div></td>
                    <td class="start"><button>Start</button></td>
                {{/if}}
            </tr>
        </script>
        <script id="template-download" type="text/x-jquery-tmpl">
            <tr class="template-download{{if error}} ui-state-error{{/if}}">
                {{if error}}
                    <td></td>
                    <td class="ext">${ext}</td>
                    <td class="code">s${code}</td>
                    <td class="name" colspan="2">Error:
                        {{if error === 1}}text
                        {{else error === 2}}text
                        {{else error === 3}}text
                        {{else error === 4}}text
                        {{else error === 5}}text
                        {{else error === 6}}text
                        {{else error === 7}}text
                        {{else error === 'maxFileSize'}}text
                        {{else error === 'minFileSize'}}text
                        {{else error === 'acceptFileTypes'}}text
                        {{else error === 'maxNumberOfFiles'}}text
                        {{else error === 'uploadedBytes'}}text
                        {{else error === 'emptyResult'}}text
                        {{else error === 'errorFileFormat'}}text
                        {{else}}${error}
                        {{/if}}
                    </td>

                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{else}}
                    <td class="ext">${ext}</td>
                    <td class="code">${code}</td>
                    <td class="name">
                        <a href="${url}"{{if thumbnail_url}} target="_blank"{{/if}}>${name}</a>
                    </td>
                    <td class="size">${sizef}</td>
                        <td class="link_setup_template">${link_setup_template}</td>
                        <td class="link_show_template">${link_show_template}</td>
                {{/if}}
                <td class="delete">
                    <button data-type="${delete_type}" data-url="${delete_url}">delete</button>
                </td>
            </tr>
        </script>
</form>

提前谢谢。

您的服务器上是否有电话?哪个URL是call?我已经改变了对这个问题的描述。如您所见,当用户尝试上载文件时,create方法会触发并返回file_list hash,其中包含错误的详细信息。但是客户端没有看到任何错误行为({{if error}}ui state error{{{/if}}此块不工作)请尝试以下呈现:json=>[{:error=>“custom_failure”}],:status=>304