Javascript 控制器对Ajax请求的响应
在产品索引页面中,我列出了所有产品的名称。我还有一个创建新产品的表单。当我提交表单时,我可以创建一个新产品,但是产品列表在我刷新页面之前不会得到更新 我将此作为参考: 产品指数: create.js.erb: 更新: 将format.js{}添加到respond_to之后,我可以在我的日志中看到它正在工作: 产品负载0.0ms从产品中选择产品。* 渲染产品/_products.html.erb 5.0ms 渲染产品/create.js.erb 9.0ms 但页面上仍然没有更新 我确信问题在于我的create.js.erb文件的内容:Javascript 控制器对Ajax请求的响应,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,在产品索引页面中,我列出了所有产品的名称。我还有一个创建新产品的表单。当我提交表单时,我可以创建一个新产品,但是产品列表在我刷新页面之前不会得到更新 我将此作为参考: 产品指数: create.js.erb: 更新: 将format.js{}添加到respond_to之后,我可以在我的日志中看到它正在工作: 产品负载0.0ms从产品中选择产品。* 渲染产品/_products.html.erb 5.0ms 渲染产品/create.js.erb 9.0ms 但页面上仍然没有更新 我确信问题在于我的
$(".updated_products").html("<%= escape_javascript(render 'products') %>") ;
固定的:
在视图中,我将呈现部分产品的ul从更新的_product类更改为id。在create.js.erb文件中也更改了它
视图:
create.js.erb
尝试将respod_中的format.js{}添加到blockI我认为它可以工作,因为我可以在日志中看到ActionView模板错误。我已经用结果更新了帖子。谢谢你的帮助。你是使用js还是json格式的请求?控制器对html和json做出响应。如果是json,则成功创建呈现:show。如果js在controller中包含format.js,则不需要绑定ajax:success。@Alexei.B我正在使用js,只要我将该行添加到controller中,它就会开始工作。感谢您将respod_中的format.js{}添加到block中。我认为它可以工作,因为我可以在日志中看到ActionView模板错误。我已经用结果更新了帖子。谢谢你的帮助。你是使用js还是json格式的请求?控制器对html和json做出响应。如果是json,则成功创建呈现:show。如果js在controller中包含format.js,则不需要绑定ajax:success。@Alexei.B我正在使用js,只要我将该行添加到controller中,它就会开始工作。谢谢
<% @products.each do |product| %>
<li><%= product.name %></li>
<% end %>
def index
@products = Product.all
@product = Product.new
end
def create
@product = Product.new(product_params)
#@product = Product.new(params[:product])
respond_to do |format|
if @product.save
format.html { redirect_to @product, notice: 'Product was successfully created.' }
format.json { render :show, status: :created, location: @product }
else
format.html { render :new }
format.json { render json: @product.errors, status: :unprocessable_entity }
end
end
end
$("<%= escape_javascript(render 'products') %>").appendTo(".updated_products);
$(".updated_products").html("<%= escape_javascript(render 'products') %>") ;
<ul id="updated_products"><%= render 'products' %></ul>
$("#updated_products").html("<%= escape_javascript(render 'products') %>") ;