1

以下は、フォームが送信されたときのように、div に "2" をレンダリングします。

完全なブランド/create.js.erb バージョン 1:

$("#brand_ajax").html("1")

$("#brand_ajax").html("0")

$("#brand_ajax").html("2")

部分的なブランド/show_brands.html.erb 更新したい div

<% for brand in @brands%>
   ID: <%= h brand.id %>
<% end %>

部分的な cars/show.html.erb ajax 呼び出し

<%= form_for([@car, @car.brands.build], **remote: true**) do |f| %>
<%= f.fields_for :brandsdo |a| %>
<%= a.text_field :name, placeholder: "New Manufacturer" %>
<% end %>
<%= f.submit "+", class: "btn inline" %>
<% end %>

**/*The div I want to refresh*/**
<div id="brand_ajax">
<%= render 'brands/show_brands' %>
</div>

ブランドコントローラー

respond_to do |format|
    if @brand.save
      format.html { redirect_to @car }
      format.js
    else
      flash[:notice] = "Error!"
      format.html { redirect_to @car }
     end
end 

以下は、新しいブランド フォームを送信した後、「2」をレンダリングしません。まったく更新されません。「show_brands」の古いバージョンを表示するだけです。

完全な Brands/create.js.erb (説明用)

$("#brand_ajax").html("1")

$("#brand_ajax").html("<%= escape_javascript render 'show_brands' %>")

$("#brand_ajax").html("2")

なぜそのようなことが起こるべきなのか考えはありますか?

4

1 に答える 1

0

試す

$("#brand_ajax").html("<%= j render :partial => 'show_brands' %>")
于 2013-03-14T12:14:36.097 に答える