Javascript внутри Ruby - PullRequest
       3

Javascript внутри Ruby

0 голосов
/ 08 декабря 2018

У меня есть метод ruby ​​для каждого нижеприведенного метода, в который встроена кнопка onclick, которую я пытаюсь вызвать для вызова API iex stats для каждой акции в портфеле при нажатии на тикер и сохранить его в таблице.построили.Вот рубин:

<% portfolio.assignments.each_with_index do |a, index|%>
   <div class="accordion" id="accordionExample">
    <div>
     <div id="headingThree">
      <h5 class="mb-0">
       <button onclick="getStock();" class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseThree<%=a.id%>" aria-expanded="false" aria-controls="collapseThree<%=a.id%>">                                    
        <li class="list-inline-item"id="<%=a.stock.ticker%>"><%= a.stock.ticker %></li>

части кода отсутствуют, но я просто включил части, которые мне показались актуальными, но когда я запускаю код и проверяю его в браузере, я вижу, что все загружаетсяправильно для каждого тикера, хранящегося в БД, но он показывает только возврат данных для первого тикера?

function getStock() {
 $('#<%=a.stock.ticker%>').each(function(){
  var theURL = `https://api.iextrading.com/1.0/stock/<%=a.stock.ticker%>/stats`;
   $.getJSON(theURL, function(data) {
     var obj = data;
      document.getElementById("symbol").innerHTML = obj.symbol;
  });
 })
};

вот часть таблицы, которую я имею:

<table class="table table-hover text-left">
    <tbody>
     <tr>
        <th>Symbol:</th>
        <td id="symbol"></td>

1 Ответ

0 голосов
/ 08 декабря 2018

У вас есть n назначения и each_with_index, вы получите n номера div, которые будут вызывать getStock() для n количества раз.

Но реальная проблема заключается в вашем JavaScriptФункция getStock() является единственной копией, и она не повторяется для поиска каждого тикера назначения для цикла.

Просто замените следующее,

"getStock();"

на,

"getStock(#{a.stock.ticker});"

И измените функцию следующим образом:

function getStock(ticker) {
 $(ticker).each(function(){
  var theURL = `https://api.iextrading.com/1.0/stock/' + ticker + '/stats`;
   $.getJSON(theURL, function(data) {
     var obj = data;
      document.getElementById("symbol").innerHTML = obj.symbol;
  });
 })
};

Обновление - В случае, если описанное выше не работает, вы можете попробовать this & update function.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...