用于 HAML 的 JS 脚本中的内联变量

Inline Variables in JS Script for HAML

本文关键字:变量 脚本 HAML JS 用于      更新时间:2023-09-26

所以我不久前为erb写了这段代码

<% if @posting.pictures.blank? %>
<% else %>
    <script>
        $("#slider-posting").vegas({
            slides: [
                    <%- @posting.pictures.each do |p| %>
                        {src: '<%=p.url%>'},
                    <%- end %>
            ],
            transition: 'slideLeft'
        });
    </script>
<% end %>

我在将其转换为 HAML 时遇到了一些麻烦。

尝试基于 http://html2haml.herokuapp.com/进行转换

- if @posting.pictures.blank?
- else
  :javascript
    $("#slider-posting").vegas({
                slides: [
    <haml_silent>                    @posting.pictures.each do |p| 
    </haml_silent><haml_block>                      {src: '#{p.url}'},
    </haml_block>           ],
                transition: 'slideLeft'
            });

导致以下错误

undefined 方法 'url' for nil:NilClass

在这一行

</haml_silent><haml_block>                        {src: '#{p.url}'},

试试这个

- if @posting.pictures.blank?
- else
  :javascript
    $("#slider-posting").vegas({
      slides: [
        #{
          @posting.pictures.map { |p| "{src: '#{p.url}'}"}.join(',')
        }
      ],
      transition: 'slideLeft'
    });

您是否尝试过省略 在 if 语句之后,通常在代码中使用三元运算符时使用它,因此请尝试省略该部分并重试。