Поэтому, когда пользователь нажимает «изменить», необходимо точно знать, какая информация была нажата, чтобы обновить базу данных и чтобы показать и скрыть информацию.
ИзмененияЯ создал демонстрационные данные , которые я создал для разработки этого решения:
@ csv_table = [{id: 3, product: "Product", описание:" Описание ", бренд:" Бренд ", действие:" Акция "}, {id: 4, продукт:" Продукт2 ", описание:" Описание2 ", бренд:" Бренд2 ", действие:" Действие2 "}]
Это так называемый «массив хэшей», и я подумал, что это то, что вы тоже использовали.
В полном коде, пока мы выполняем итерацию по массиву, мыможно увидеть два значения: name и value .Я использовал «значение» вместо идентификатора, потому что я не хотел вызывать конфликт HTML.Таким образом, вы можете увидеть в коде это:
<% value = row[:id] %>
И это
<% name = key[0] %>
Тогда у каждой строки есть поле и информация (но одна из них скрыта), какитак:
<td class="value">
<a id=<%= "info_#{name}#{value}" %> class="info <%= "info_dtr#{value}" %>" name=<%= name %> value=<%= value %>><%= row[name] %></a>
<%= text_field_tag :login_aei, "", class: "form-control field field_dtr#{value}", id: "field_#{name}#{value}" %>
</td>
Можете ли вы заметить, что идентификатор имеет имя и значение?Таким образом, мы можем сказать JQuery искать поле, которое мы щелкнули.Например, info_product1 и field_product1, и установите его в hide ();или показать () ;.Ниже приведен полный код, в основном это javascript и html трюки, поэтому вы можете попробовать немного поиграться:
Ruby + Html:
<style>
.dtr{
display:none;
}
</style>
<div class="container" align="center">
<h1>Products Description</h1>
</div><br />
<table class="table table-striped" border=2 style="border: 2px solid;">
<thead>
<tr>
<th scope="col">Product Name</th>
<th scope="col">Product Description</th>
<th scope="col">Brand Name</th>
<th scope="col">Action</th>
<th></th>
</tr>
</thead>
<tbody>
<% @csv_table.each_with_index do |row, i|%>
<% value = row[:id] %>
<tr class="mtr">
<% row.each_with_index do |key, j| %>
<% name = key[0] %>
<% unless j==0 %>
<td class="value">
<a id=<%= "info_#{name}#{value}" %> class="info <%= "info_dtr#{value}" %>" name=<%= name %> value=<%= value %>><%= row[name] %></a>
<%= text_field_tag :login_aei, "", class: "form-control field field_dtr#{value}", id: "field_#{name}#{value}" %>
</td>
<% end %>
<% end %>
<td>
<%= link_to "Save", {}, remote: true, class: 'form-control save', 'value' => value %>
<div class="delete"><%=link_to "Delete",class: 'form-control'%></div>
</td>
</tr>
<% end %>
</tbody>
</table>
</body>
Javascript:
$(document).ready(function(){
$(".field").hide();
});
$(".info").click(function(event){
console.log("info");
name = $(this).attr("name");
id = $(this).attr("value");
console.log($(this).attr("value"));
$("#info_" + name + id).hide();
$("#field_" + name + id).show();
});
$(".save").click(function(event){
event.preventDefault();
// { .. if saves}
console.log("salvar");
id = $(this).attr("value");
$(".field_dtr" + id).hide();
$(".info_dtr" + id).show();
});