Моят код е структуриран по такъв начин, че щракването върху бутон „Редактиране“ показва скрита форма (написана с вграден ruby) в рамките на html таг „div“ и в тази форма е text_field_tag, чийто id се използва за свързване с инструмент за избор на дата използвайки Jquery.
Използвайки текущия си код за изглед и кода на jquery datepicker в rails: мога да щракна върху бутон за редактиране и да избера дата, като използвам text_field_tag за всеки формуляр. Въпреки това, когато се опитам да изпратя тази стойност за избор на дата, тя се изпраща само за първия формуляр (за първия елемент '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();
});
});