2016-03-08 3 views
0

Это код jplayer:передавая переменную js.erb файл

песни/show.html.erb

<% content_for :mp3script do %> 
    <script type="text/javascript"> 
    //<![CDATA[ 
    $(document).ready(function(){ 

     $("#jquery_jplayer_1").jPlayer({ 
     ready: function() { 
      $(this).jPlayer("setMedia", { 
      mp3: "<%= @song.mp3.url %>" 
      }).jPlayer("play"); 
     }, 
     }); 
    }); 
    //]]> 
    </script> 
<% end %> 

У меня есть это на голову application.html.erb:

<%= yield :mp3script %> 

Все работает нормально, но немного уродливо разместить JavaScript внутри html напрямую, поэтому я хочу поместить его в файл .js.erb.

Когда я положил его в mp3script.js.erb он дает эту ошибку:

undefined method `mp3' for nil:NilClass 

Если мне удастся поставить JavaScript в .js.erb является Javascript application.js будет перекомпилировать каждый раз изменение ссылки в файле? Я думаю, что это плохо, не так ли?

+0

Можете ли вы проверить, что действие 'songs # show' определяет переменную' @ song'? –

+0

@VenkatCh Очевидно, что именно он говорит, что работает приложение 'app/views/songs/show.html.erb'. – meagar

+0

@VenkatCh да, как meagar сказал, – anouar

ответ

0

Вы не можете передавать данные с контроллеров в конвейер активов, конвейер ресурсов не имеет доступа к переменным экземпляра вашего контроллера или даже к текущему объекту запроса, поскольку они не будут существовать, когда активы предварительно скомпилированы.

Ваш текущий подход правильный.

is the javascript application.js going to be re-compiled every time the mp3 link change in production?

Нет, это не так, как трубопроводные активы работы, и это именно по этой причине вы не можете переместить динамически генерируемый JavaScript в .js.erb файл.

+0

, поэтому нет решения, я просто думаю, что это нехорошо разоблачить mp3-url в html как – anouar

+0

@anouar, вы все равно будете разоблачать его в JavaScript, какая разница? – meagar

+0

У вас есть решение? поэтому mp3-url не показан прямо на html, любой ударил ctrl + u, он увидит это – anouar

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