首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:使用ujs更新记录

Rails:使用ujs更新记录
EN

Stack Overflow用户
提问于 2013-09-11 14:38:33
回答 1查看 784关注 0票数 0

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

我添加了新记录,只需将新的表行/记录追加到表的底部,但在更新现有记录后,找出如何显示更改是有困难的。以下是一些代码:

update.js.erb

代码语言:javascript
复制
  console.log('Updated');
  $('#dialog-form').dialog('close');
  $('#dialog-form').remove();
  $('table').update record somehow?

通常我会做这样的事

代码语言:javascript
复制
$(this).closest('tr').remove();
$(this).closest('tr').append('whatever');

但是这是行不通的,因为update按钮是在一个模态中,而不是在实际的表中。

作为参考,下面是我如何添加一个新记录:

create.js.erb

代码语言:javascript
复制
  console.log('Created');
  $('#dialog-form').dialog('close');
  $('#dialog-form').remove();
  $('table').append('<%= escape_javascript(render(@exercise)) %>');
  $('tr').last('tr').effect('highlight');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-11 14:49:52

你可以这样做:

代码语言:javascript
复制
# 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)) %>');

希望这能有所帮助!你可以随便问关于这个的任何问题

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18744197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档