2014-09-27 2 views
0

У меня есть следующий фрагмент кода:новообращенный рубин + код Javascript для CoffeeScript

$(document).ready(function() { 
    // Cycles the carousel to a particular frame 
     <% (0..6).each_with_index do |i, index| %> 
     $(".slide<%= i%>").click(function(){ 
      $("#myCarousel").carousel(<%= i%>); 
     }); 
     <% end %> 
    }); 

Мне нужно, чтобы преобразовать его в кофе сценария и переместить его из внешнего файла.

1) Можно ли перевести переменные отсюда во внешний файл? 2) Как это сделать?


Обновленный код, чтобы показать, почему мне нужно передавать переменные.

$(document).ready(function() { 
    // Cycles the carousel to a particular frame 
    <% @images.each_with_index do |i, index| %> 
    $(".slide<%= index%>").click(function(){ 
     $("#myCarousel").carousel(<%= index%>); 
    }); 
    <% end %> 
}); 
+0

Почему вы хотите передать какие-либо переменные? Здесь вам вообще не нужен ни один из Ruby/ERB. –

+0

обновили код. –

ответ

0

Как упомянуто мю слишком коротка вы на самом деле не нужно передавать какие-либо переменные, которые можно напрямую преобразовать его в CoffeeScript так:

$(document).ready -> 
    for i in [0..6] 
     $(".slide#{i}").click -> 
      $("#myCarousel").carousel i 
+1

Возможно, вы захотите использовать цикл 'do', чтобы убедиться, что' i' - это то, что вы ожидаете от него в обработчиках кликов. –

+0

обновили код –

0

Мне кажется, что ответ Кайла Нидхема есть (главным образом) правильный. Вы можете просто сделать это во внешнем файле:

root = exports ? this 

root.foo = {} #namespace 

root.foo.createNCarousels = (n) -> 
    for i in [0..(n - 1)] 
    do (i) -> #If this is confusing, see http://rzrsharp.net/2011/06/27/what-does-coffeescripts-do-do.html 
     $(".slide#{i}").click -> 
     $("#myCarousel").carousel i 

Теперь в вашем исходном файле включают внешний тег сценария, и вы должны быть в состоянии назвать это так:

$(document).ready(function() { 
    // Cycles the carousel to a particular frame 
    document.foo.createNCarousels(<%= @images.length %>); 
}); 

Имейте в виду, я не Я не знаю Ruby, поэтому синтаксис Ruby может быть неправильным, но я надеюсь, что мое намерение ясно.

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