У меня есть код, структурированный таким образом, что при нажатии на кнопку «Изменить» отображается скрытая форма (написанная на встроенном ruby) в HTML-теге «div», а внутри этой формы находится text_field_tag, идентификатор которого используется для привязки к средству выбора даты с помощью Jquery.
Используя мой текущий код просмотра и код jquery datepicker в rails: я могу нажать кнопку редактирования и выбрать дату, используя text_field_tag для каждой формы. Однако, когда я пытаюсь отправить это значение datepicker, оно отправляется только для первой формы (для первого элемента 'td).
Я предполагаю, что я делаю что-то неправильно с кодом Jquery. Может ли кто-нибудь указать мне, как я могу отправить значение средства выбора даты для соответствующей формы (ближайшая форма в пределах «td» при нажатии кнопки), а не только для отправки для первой формы ( первый элемент 'td')
Вот мой код:
ПРОСМОТР в RAILS:
<h2>Files</h2>
<table class="table">
<tr>
<th>Filename</th>
<th>Description</th>
<th>Download Link</th>
</tr>
<% @files.each do |file| %>
<% filename = file.split('/').last %>
<% object = @bucket.objects[file] %>
<tr>
<td><%= filename %></td>
<td>
<div class="file_description"><%= object.metadata['description']%>
<button id ="button1" type="button" class= "btn btn-default
edit_description" onclick="Window(this)">Edit</button>
</div>
<div id = 'hidden_form' class="file_description_update" >
<%= form_tag({:action => 'update_file_info'}, multipart: true) do %>
Update File Description: <%= text_area_tag :description %>
<%= hidden_field_tag :s3_path, file %>
<%= hidden_field_tag :prefix, @prefix %>
<%= text_field_tag 'user_input' %>
<%= submit_tag 'Submit' %> </td> <br />
<% end %>
</div>
</td>
Код для Jquery в файле application.js в Rails:
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require bootstrap
//= require_tree .
//= require jquery.ui.all
//= require jquery.ui.datepicker
$(document).ready(function(){
$( "button.edit_description" ).on( "click", function( event ) {
$(this).closest('td').find("div.file_description_update" ).show();
$(this).closest('td').find("div.file_description_update"
).find('#user_input').datepicker();
});
});