2016-01-27 3 views
0

Так я написал этот код для Еврорадио некоторое время назадВстроенные переменные в JS скрипт для Haml

<% 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' 
      }); 

Вызывает следующую ошибку

неопределенный метод `URL» для ноль: NilClass

на этой линии

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

попробовать http://html2haml.herokuapp.com/ – chaitanya

+0

я сделал, я не верю, что преобразование пошел слишком хорошо, хотя. Редактировать сообщение, чтобы показать результаты + тест – Kishe

+0

Это может помочь: http://stackoverflow.com/questions/2640863/ruby-methods-within-javascript-within-haml –

ответ

1

попробовать это

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

Я получаю это при попытке вашего кода: undefined method '- @ 'для # Kishe

+0

У меня есть обновленный код. Удалить '-' в' - @ posting' –

+0

Это работает! Спасибо :) – Kishe

0

Have вы пытался пропустить ? После того, как оператор if, он обычно используется, когда вы используете тернарный оператор в своем коде, поэтому, пожалуйста, попробуйте исключить эту часть и повторите попытку.

+0

Что? является частью метода name 'blank?' –

Смежные вопросы