"unexpected '}', expecting =>" 使用属性时

"unexpected '}', expecting =>" while using attributes

我有一个 img 标签作为 html,我想在 erb 中使用它:

<img src="images/Slider/app.png" alt="" width="636" height="441" data-ww="['600px','500px','400px','200px']" data-hh="['338px','281px','225px','113px']" data-no-retina>

我的 html erb 代码是:

<%= image_tag "/Slider/app.png", width:"636", height:"441", data: { ww:['600px','500px','400px','200px'], hh:['338px','281px','225px','113px'], no-retina } %>

但我收到语法错误:unexpected '}', expecting =>

Rails 不允许 dash-case 作为散列键。因此在尝试解析 no-retina.

时语法失败

如果你想用 dash-case 作为键,你应该使用横向字符串

<%= image_tag "/Slider/app.png", width:"636", height:"441", data: { ww:['600px','500px','400px','200px'], hh:['338px','281px','225px','113px'], 'no-retina': true } %>

在这种特殊情况下(image_tag 帮助程序和数据属性),但是,Rails 足够聪明,可以让您获得正确的 HTML 如果您只使用 uderscores:

<%= image_tag "/Slider/app.png", width:"636", height:"441", data: { ww:['600px','500px','400px','200px'], hh:['338px','281px','225px','113px'], no_retina: true } %>

此外,如果您查看 image_tag 文档,您会发现可以使用 size 指定高度和宽度。通过一些代码风格清理,这看起来好多了:

<%= image_tag "/Slider/app.png", size: "636x441", data: { ww: ['600px','500px','400px','200px'], hh: ['338px','281px','225px','113px'], no_retina: true } %>

你可以通过-打破它并嵌套它

<%= image_tag "/Slider/app.png", data: { no: { retina: true } } %>