我有一个简单的应用程序,它使用带有模式的Ajax在常规表视图中添加和更新记录。
我通过将新表行/记录附加到表格的底部来添加新记录,但在更新现有记录后无法确定如何显示更改。这是一些代码:
update.js.erb
console.log('Updated');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table').update record somehow?
通常我会做类似
的事情$(this).closest('tr').remove();
$(this).closest('tr').append('whatever');
但这不起作用,因为更新按钮是模态的,而不是实际的表。
供参考,以下是我添加新记录的方法:
create.js.erb
console.log('Created');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table').append('<%= escape_javascript(render(@exercise)) %>');
$('tr').last('tr').effect('highlight');
答案 0 :(得分:1)
你可以这样做:
# index.html.erb
<table>
<tbody>
<% @exercises.each do |exercise| %>
<tr id="exercise_<%= exercise.id %>">
<td><%= exercise.name %></td>
# etc...
</tr>
<% end %>
</tbody>
</table>
# update action in controller:
def update
@exercise = Exercise.where(id: params[:id]).first
@exercise.update_attributes(params[:whatever])
# etc ...
# update.js.erb
console.log('Updated');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table tr#exercise_<%= @exercise.id %>').replaceWith('<%= escape_javascript(render(@exercise)) %>');
希望这有帮助!随意询问有关此问题的任何问题