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

时间:2016-01-27 06:09:43

标签: javascript ruby-on-rails 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的未定义方法`url':NilClass

在这一行

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

2 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:0)

您是否尝试在if语句后省略,当您在代码中使用三元运算符时,通常会使用 ,因此请尝试省略该部分并重试。< / p>