我的代码结构是这样的:单击“编辑”按钮会在“div”html标签中显示一个隐藏的表单(用嵌入的ruby编写),并且该表单中有一个text_field_tag,其id用于绑定到日期选择器使用jQuery。
在 rails 中使用我当前的视图代码和 jquery datepicker 代码:我可以单击编辑按钮并使用每个表单的 text_field_tag 选择日期。但是,当我尝试提交该 datepicker 值时,它只会提交给第一个表单(对于第一个 'td 元素)。
我猜我的 Jquery 代码做错了什么。谁能指导我如何提交相应表单的日期选择器值(单击按钮时“td”中最接近的表单),而不是只提交第一个表单(第一个'td'元素)
这是我的代码:
在导轨中查看:
<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>
Rails 中 application.js 文件中的 Jquery 代码:
//= 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();
});
});