Предполагая, что переменная содержит URL, например:
$(document).ready(function(){
$('#player').youTubeEmbed("<%=escape_javascript(@clip)%>");
});
(Извините, пропустил тот факт, что JavaScript не был в том же файле, что и HTML - также не должно быть!)
Предполагая, что переменная содержит URL, если вы не хотите, чтобы URL отображался, вы можете встроить его в переменную страницы следующим образом (замените код div
в show.html.erb следующим):
<script type='text/javascript'>
window.myStuff = {
clipUrl: "<%=escape_javascript(@clip)%>"
};
</script>
... (или
<script type='text/javascript'>
var myStuff = {
clipUrl: "<%=escape_javascript(@clip)%>"
};
</script>
... это почти одно и то же).
... и тогда вы можете использовать его так:
$(document).ready(function(){
$('#player').youTubeEmbed(window.myStuff.clipUrl);
});
При выводе значения переменной таким способом вы должны убедиться, что то, что выписывается, в конечном итоге является допустимым JavaScript. Так, например, если переменная @clip
содержит "
или \
, вам нужно убедиться, что "
превращен в \"
и что любой одиночный обратный слеш превращен в \\
. Якуб Хэмпл (Jakub Hampl) услужливо указал на эту функцию escape_javascript
, которую я отредактировал в примерах кода.
Это означает, что мы добавляем новый символ на window
. Я сделал наш новый символ объектом, чтобы, если нам нужно было сделать это с другими вещами, мы могли бы включить их в этот же объект, чтобы мы не получали символы повсюду (создавая множество глобальных символов & mdash; к тому же, свойства window
- это проблема обслуживания, которую лучше избегать). Например, если у вас было двух клипов:
<script type='text/javascript'>
window.myStuff = {
someNiftyClip: "<%=escape_javascript(@clip)%>",
someOtherNiftyClip: "<%=escape_javascript(@anotherClip)%>"
};
</script>
Не по теме : обратите внимание, что в конце строки youTubeEmbed
я добавил точку с запятой. Лучше не полагаться на JavaScript точка с запятой .