Javascript Rails:使用ujs更新记录
我有一个简单的应用程序,它使用带有模式的Ajax在常规表视图中添加和更新记录 我只需将新表行/记录追加到表的底部,就可以添加新记录,但我很难确定更新现有记录后如何显示更改。下面是一些代码: update.js.erbJavascript Rails:使用ujs更新记录,javascript,ruby-on-rails,ujs,Javascript,Ruby On Rails,Ujs,我有一个简单的应用程序,它使用带有模式的Ajax在常规表视图中添加和更新记录 我只需将新表行/记录追加到表的底部,就可以添加新记录,但我很难确定更新现有记录后如何显示更改。下面是一些代码: update.js.erb console.log('Updated'); $('#dialog-form').dialog('close'); $('#dialog-form').remove(); $('table').update record somehow? console.l
console.log('Updated');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table').update record somehow?
console.log('Created');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table').append('<%= escape_javascript(render(@exercise)) %>');
$('tr').last('tr').effect('highlight');
通常我会这样做
$(this).closest('tr').remove();
$(this).closest('tr').append('whatever');
但这不起作用,因为update按钮处于模式中,而不在实际的表中
以下是我如何添加新记录以供参考:
create.js.erb
console.log('Updated');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table').update record somehow?
console.log('Created');
$('#dialog-form').dialog('close');
$('#dialog-form').remove();
$('table').append('<%= escape_javascript(render(@exercise)) %>');
$('tr').last('tr').effect('highlight');
console.log('Created');
$(“#对话框形式”).dialog('close');
$(“#对话框形式”).remove();
$(“表”)。追加(“”);
$('tr')。最后('tr')。效果('highlight');
您可以这样做:
# 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)) %>');
#index.html.erb
#等等。。。
#控制器中的更新操作:
def更新
@exercise=exercise.where(id:params[:id])。首先
@更新_属性(参数[:whatever])
#等等。。。
#update.js.erb
console.log('Updated');
$(“#对话框形式”).dialog('close');
$(“#对话框形式”).remove();
$(‘表tr#练习’)。替换为(“”);
希望这有帮助!请随时询问有关此问题的任何问题谢谢!控制器部分在做什么?没什么,它在这里向您展示我在update.js.erb中使用
@exercise
变量,您的更新操作做什么?哦。我以为你在控制器动作中添加了一些东西。我的更新操作如下所示:@exercise=exercise.find(params[:id])
,后跟响应块。我正在尝试。我无法更新特定的tr。我需要在tr标签上添加一个练习id吗?没关系!我对您的html示例进行了详细介绍。给我一秒钟来编辑我的代码。