HAML 的 JS 脚本中的内联变量

Inline Variables in JS Script for HAML

所以我刚才为 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'
            });

导致以下错误

nil:NilClass

的未定义方法“url”

这条线

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

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

试试这个

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