0

我有一个简单的应用程序,它使用带有模式的 Ajax 在常规表视图中添加和更新记录。

我通过仅将新表行/记录附加到表底部来添加新记录,但是在更新现有记录后无法弄清楚如何显示更改。这是一些代码:

更新.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');

但这不起作用,因为更新按钮在模式中,而不是在实际表中。

作为参考,这是我添加新记录的方法:

创建.js.erb

  console.log('Created');
  $('#dialog-form').dialog('close');
  $('#dialog-form').remove();
  $('table').append('<%= escape_javascript(render(@exercise)) %>');
  $('tr').last('tr').effect('highlight');
4

1 回答 1

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)) %>');

希望这可以帮助!随时询问有关此的任何问题

于 2013-09-11T14:49:52.310 回答