Как передать значение в JavaScript в рельсы html.erb

1

Я пытаюсь передать значение 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>
Теги:
ruby-on-rails-4

1 ответ

1
Лучший ответ

Вы должны напечатать его как встроенный рубин и перенести его в кавычки:

<% @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>
  • 0
    Это сделало трюк! Спасибо
  • 0
    Я довольно новичок в рельсах. Это то, что я планировал сделать дальше, как только получу рабочую версию. Приятно, что вы добавили эту информацию. Еще раз спасибо! Обязательно приму этот ответ.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню