0

ファイル:localsから呼び出されたときにレンダリングが機能しないのはなぜですか?js.erb

これは私のcreate.js.erb

$("#div").before("<%= escape_javascript(render("/admin/products/variant_image_preview", :locals => {:image => @variant_image})) %>");

variant_image_preview.html.erb:

<div id="variant_image_<%= image.id %>">

  <%= image_tag image.image_url(:thumb), width: 114, height: 88 %>
  <% form_name = "product[variants_attributes][1][images_attributes][#{Time.now.to_f}]" %>

  <input type="hidden" value="<%= image.id %>" name="<%= form_name %>[id]">

  <a id="<%= image.id %>" class="remove_image" title="Remover imagem">
    <img src="/assets/bg_close.png" alt="Remover imagem">
  </a>
</div>

variant_image_preview.html.erb の最初の行で、次のエラーが発生します。

NameError - undefined local variable or method `image' for #<#<Class:0x0000000f4f6e88>:0x000000101332c8>:

StackOverflow に関するいくつかの投稿では、このコードは機能するはずだと述べています。何か助けはありますか?

4

1 に答える 1

1

使用する構文では、次のように locals を 2 番目の引数として渡す必要があります。

render("/admin/products/variant_image_preview", :image => @variant_image)

この構文をより宣言的な呼び出しに置き換えることができます。

render(partial: "/admin/products/variant_image_preview", :locals => {:image => @variant_image})
于 2013-02-15T20:47:02.347 に答える