[Rails] jQuery:语法错误,无法识别的表达式

时间:2013-02-20 17:25:41

标签: jquery ruby-on-rails syntax-error sizzle

我的Rails 3应用程序出了问题:我的视图中有一个脚本显示上传的进度条(上传过程有效):

<h1>Ajouter des images:</h1>

<%= form_for [:admin, :gallery,  @painting], html: { multipart: true} do |f| %>

  <%= f.hidden_field :gallery_id %>

  <%= f.label :image, "Upload paintings:" %>

  <%= f.file_field :image, multiple: true, name: "painting[image]" %>

<% end %>

<script id="template-upload" type="text/x-tmpl">
  <div class="upload">
    {%=o.name%}
    <div class="progress"><div class="bar" style="width: 0%"></div></div>
  </div>
</script>

但是当我尝试上传文件时,我收到了这个错误:

Uncaught Error: Syntax error, unrecognized expression: <div class="upload">
  Argentina.gif
  <div class="progress"><div class="bar" style="width: 0%"></div></div>
</div> 

来自jquery.js文件:

Sizzle.error = function( msg ) {
    throw new Error( "Syntax error, unrecognized expression: " + msg );

我真的不知道如何解决它,我已经寻求了很多! 谢谢你的帮助!

4 个答案:

答案 0 :(得分:13)

由于模板标记内的缩进,这种情况正在发生。看看:jquery-htmlstring-versus-jquery-selectorstring

您可以使用$.parseHTML()

来避免此问题
data.context = $($.parseHTML(tmpl("template-upload", file))[1])

答案 1 :(得分:0)

jquery-file-upload在ruby 1.9.x中存在兼容性问题。最近修复了https://github.com/blueimp/jQuery-File-Upload/pull/2031

其他人遇到了同样的问题(包括我自己)https://github.com/waynehoover/s3_direct_upload/issues/47

尝试使用bundle update jquery-fileupload-rails更新您的gem。 (我假设你正在使用那颗宝石。)

答案 2 :(得分:0)

使用模板时删除Jquery函数 $()。这与Jquery 1.9.1兼容。你应该处理像bellow

这样的模板
tmpl("template-upload", {file: file, icon: icon_name[type]})

而不是

$(tmpl("template-upload", {file: file, icon: icon_name[type]}))

答案 3 :(得分:0)

使用最新版本的jquery,添加tril就可以了。

$(tmpl("template-upload", {file: file, icon: icon_name[type]}).trim())