Ruby on rails 在创建AJAX操作之后,如何发回Rails中更新的对象集合?
因此,我对如何在create操作之后发回@tasks的更新集合感到困惑,这样我就可以在页面上看到新创建的项目,而无需进行刷新。我该怎么做?让我按顺序引导您浏览我的代码 首先,这是我的index.html.erb代码:Ruby on rails 在创建AJAX操作之后,如何发回Rails中更新的对象集合?,ruby-on-rails,ajax,Ruby On Rails,Ajax,因此,我对如何在create操作之后发回@tasks的更新集合感到困惑,这样我就可以在页面上看到新创建的项目,而无需进行刷新。我该怎么做?让我按顺序引导您浏览我的代码 首先,这是我的index.html.erb代码: <div class="row"> <div class="col-md-5 col-md-offset-1"> <h2>Tasks</h2> </div> <div class="col-md
<div class="row">
<div class="col-md-5 col-md-offset-1">
<h2>Tasks</h2>
</div>
<div class="col-md-2 col-md-offset-4">
<%= link_to new_task_path, remote: true do %>
<button class="btn btn-default">New</button>
<% end %>
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-2" id="task-form" style="display:none;"></div>
</div>
<div class="row">
<div class="col-md-7 col-md-offset-1" id="tasks"><%= render @tasks %></div>
</div>
$('#task-form').html("<%= j (render 'form') %>");
$('#task-form').slideDown(350);
在这里之后,我想做的是发回@tasks的更新集合,并在页面上呈现它们。无论如何,我可以重新呈现index.html.erb视图并将其发送给Task.all吗?在
def create中添加实例变量@tasks
def create
@task = Task.create(task_params)
@tasks = Task.all
respond_to do |format|
format.js
end
end
创建一个新文件Create.js.erb
$('#tasks').html("<%= j (render @tasks) %>");
$('#tasks').html(“”);
在您的情况下,您的创建.js.erb
将如下所示:
$('#tasks').append("<li> <%= @task.inspect %> </li>");
$(“#任务”)。追加(”;
rails是否会自动查找create.js.erb文件?它是如何做到这一点的?render@tasks在幕后为您做了什么?是的。Rails将使用create.js.erb
作为create
方法中的响应js格式。在render@tasks的幕后,我不确定这一点,但是rails可以自动检测文件和对象。你能告诉我你在渲染部分任务时使用的是什么文件吗?
def create
@task = Task.create(task_params)
@tasks = Task.all
respond_to do |format|
format.js
end
end
$('#tasks').html("<%= j (render @tasks) %>");
$('#tasks').append("<li> <%= @task.inspect %> </li>");