我正在开发一个模块来创建产品并通过ajax和remote:true显示它而不更新页面。 我通常会在create.js.erb中执行类似的操作:
$("#container_products").prepend('<%= j render @product %>');
$("#product_<%= @product.id %>").hide().fadeIn(500);
这会将注册表呈现在一个名为&#34; _product.html.erb&#34;并且会在不重新加载页面的情况下显示它
但是在这种情况下,partial不会在同一个文件夹中,而是在名为&#34; folder_parcial&#34;的子文件夹中,所以我必须在渲染中指定partial以这种方式在子文件夹中:
$("#container_products").prepend('<%= j render(:partial => '/products/folder_partial/product', collection: @product) %>');
$("#product_<%= @product.id %>").hide().fadeIn(500);
但是没有告诉我记录,可能出错了什么?
这是我的索引:
<table class="table table-striped table-bordered table-condensed table-hover">
<thead>
</thead>
<tbody id="container_products">
<%= render partial: "/products/folder_partial/product", collection: @products %>
</tbody>
</table>
这是我文件夹中的部分_product.html.erb&#34; folder_partial&#34;
<tr id="product_<%= product.id %>">
<td class="component_name_body_col"><%= product.try(:id)%></td>
<td class="component_name_body_col"><%= product.try(:Name)%></td>
</tr>
这是我的创作动作:
def create
@product = Product.new(product_params)
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 }
format.js {flash.now[:notice] = '.'} #ajax
else
format.html { render :new }
format.json { render json: @product.errors, status: :unprocessable_entity }
format.js {flash.now[:alert] = '.'} #ajax
end
end
end
答案 0 :(得分:0)
我找到了解决方案
$("#container_products").prepend('<%= j render(:partial => '/products/folder_partial/product', locals: { product: @product}) %>');