Я заполняю таблицу на основе итераций записей базы данных, используя цикл ".each do".Я хочу, чтобы у каждой таблицы cel было диалоговое окно jQuery-UI, которое может запускаться при нажатии кнопки cel.Проблема в том, что при нажатии одного cel, поскольку все они используют одну и ту же функцию, он запускает сотни диалоговых окон.
Я знаю, это потому, что я использую селектор класса (class = "opener"), но селектор идентификаторов тоже не работает, я думаю, потому что есть сотни таблиц, которые разделяют идентификатор.
<table>
<!-- Loop for each iteration of User -->
<% @users.each do |user| %>
<tr>
<!-- The email address for current iteration of User -->
<th style="padding:2.5px;" colspan="5">
<%= user.email %>
</th>
<!-- Loop for each iteration of a Field for User -->
<% user.fields.reverse_each do |field| %>
<td>
<button class="opener"> Click to open dialog </button>
<!-- When clicked, it should show a dialog box -->
<div class="dialog" title="Dialog Title">
<p>Dialog Content</p>
</div>
</td>
<!-- End of Field iterations -->
<% end %>
</tr>
<!-- End of User iterations -->
<% end %>
</table>
jQuery-UI:
$(document).ready( function () {
//= To prevent dialog box from opening automatically
$( ".dialog" ).dialog({ autoOpen: false });
//= Click HTML element with class ".opener" to open dialog boxes
$(".opener").click(function () {
//= Function for dialog box
$( ".dialog" ).dialog( "open" );
});
});
Что я хочуДля этого нужно присвоить имя классу тега или даже идентификатору тега как «<% = field.id%>» для каждой итерации цикла, чтобы каждый сгенерированный тег td (class / id) был уникальным для этой итерации записи.Я знаю, что эти теги Rails получают правильные значения базы данных в HTML, потому что я проверил, я просто не знаю, как вызывать его в функциях jQuery-UI.Ничто из того, что я пробовал, не работает на этом фронте (this.className / this.attr).Должен ли я сделать реализацию AJAX или JSON.Если да, то как бы я поступил так?
С другой стороны, кто-нибудь знает, будет ли Vue.js лучше для того, что я пытаюсь сделать?
Спасибо за любыепомощь!