如何在不同的部分中呈现数据

时间:2017-04-28 08:26:13

标签: javascript ruby-on-rails ruby ajax ruby-on-rails-4

我正在开发一个模块来创建产品并通过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

1 个答案:

答案 0 :(得分:0)

我找到了解决方案

 $("#container_products").prepend('<%= j render(:partial => '/products/folder_partial/product', locals: { product: @product}) %>');