我有 jquery 代码来计算表中的当前行(并进行一些算术运算)并将它们添加到列中。我在我的中使用过这个脚本,_form/_partial
效果很好。但是,当我在我的内部使用相同的脚本show.html.erb
(再次设置同一个表)时,它不起作用。
这是我的_form
<table id="mytable">
<th>RowNumber</th>
<th>header2</th>
<th>header3</th>
<th>header4</th>
<%= f.nested_fields_for :partial do |f|
render 'partial', f: f
end -%>
<caption align = "bottom"><%= link_to_add_fields "Add Field", f, :manual_iops %></caption>
</table>
_partial.html.erb
<tr>
<td>
<!-- Nothing Goes Here -->
</td>
<td>
<%= f.text_field :data1 %>
</td>
<td>
<%= f.text_field :data2 %>
</td>
<td>
<%= f.text_field :data3 %>
</td>
</tr>
<script>
$('tr').each(function(){
var index= $('#mytable').children('tr').index($(this))
if(index == 0){
var position= 5;
}
if(index == 1){
var position = 10;
}
if(index == 2){
var position = 15;
}
if(index == 3){
var position = 20;
}
if(index > 3){
var position = (index-1)*10
}
$(this).children('td').first().html(position);
})
</script>
现在这是我在节目中尝试的内容:
显示.html.erb
<table id="mytable">
<th>RowNumber</th>
<th>header1</th>
<th>header2</th>
<th>header3</th>
<% @data_sheet.partials.each do |c| %>
<tr>
<td></td>
<td><%= c.data1 %></td>
<td><%= c.data2 %></td>
<td><%= c.data3 %></td>
</tr>
<script>
$('tr').each(function(){
var index= $('#mytable').children('tr').index($(this))
if(index == 0){
var position= 5;
}
if(index == 1){
var position = 10;
}
if(index == 2){
var position = 15;
}
if(index == 3){
var position = 20;
}
if(index > 3){
var position = (index-1)*10
}
$(this).children('td').first().html(position);
})
</script>
<% end %>
</table>
这是我的_form
外观图像,您可以看到第一列具有值:5, 10, 15, 20
,因为我的脚本在partial.html.erb
计算行数并执行了一些 + 和 *:
这是我的,由于我的问题show.html.erb
,它显示了一个空列(应该填充5,10,15,20
)。我在这里从我的部分运行相同的脚本:
那么在这种情况下我做错了什么?我看到的唯一不同的是我的循环和我没有渲染部分的事实,但我看不出这会影响我的 javascript 的原因。我真的把我的头撞到墙上了。