Я пытаюсь передать значение user.skypeid
до яваскрипта кода participants
в html.erb. Каков правильный способ сделать это? Следующий подход не работает для меня.
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td><%= user.skypeid %></td>
<td><%= link_to 'Show', user_path(user) %></td>
<td>
<div id="SkypeButton_Call_aaa_1">
<script type="text/javascript">
Skype.ui({
"name": "call",
"element": "SkypeButton_Call_aaa_1",
"participants": [user.skypeid]
});
</script>
</div>
</td>
</tr>
Вы должны напечатать его как встроенный рубин и перенести его в кавычки:
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td><%= user.skypeid %></td>
<td><%= link_to 'Show', user_path(user) %></td>
<td>
<div id="SkypeButton_Call_aaa_1">
<script type="text/javascript">
Skype.ui({
"name": "call",
"element": "SkypeButton_Call_aaa_1",
"participants": ['<%= user.skypeid %>']
});
</script>
</div>
</td>
</tr>
<% end %>
Хотя вы можете переместить скрипт за пределы или в другой файл:
<% @users.each do |user| %>
<tr class="">
<td><%= user.name %></td>
<td><%= user.skypeid %></td>
<td><%= link_to 'Show', user_path(user) %></td>
<td>
<div id="SkypeButton_Call_aaa_1" data-skype="<%= user.skypeid %>"></div>
</td>
</tr>
<% end %>
<script type="text/javascript">
let id = 'SkypeButton_Call_aaa_1'
let user = document.getElementById(id).dataset
Skype.ui({
'name': 'call', 'element': id, 'participants': [user.skype]
})
</script>