我有許多圖像的頁面,每個圖像都有一個用於在該圖像上提交標籤的關聯文本框。每個圖像和文本框都通過局部視圖呈現。目前,我可以更新標籤,並且可以通過整頁刷新正常工作。我希望能夠通過AJAX做到這一點,但我遇到了一些麻煩。使用AJAX更新部分視圖
這裏是在局部視圖中的形式的代碼:
<%= image_tag image.src %>
<%= form_tag :controller => "images", :action => :update_tags, :remote => true, :image => image.id do %>
<td><%= label_tag "Tags:" %></td>
<td><%= text_field_tag :tags, image.tags %></td>
<td><%= submit_tag "Submit" %></td>
<% end %>
而調用局部的主要形式:
<% @images.each do |image| %>
<div id="image_#{image.id}">
<%= render :partial => "image_tag", :locals => { :image => image } %>
</div>
<% end %>
在:update_tags方法在控制器I添加圖像的標籤到數據庫,然後要重新加載該圖像的部分視圖。
這裏是控制器的重定向代碼:
respond_to do |format|
format.js
format.html { redirect_to :back, :remote => true }
end
而且update_tags.js.erb:
$("#image_#{image.id}").html("<%= escape_javascript(render :partial => 'image_tag', :locals => {:image => image}) %>");
它目前正在努力功能,但沒有AJAX神奇的發生。我仍然在學習Rails和jQuery,所以任何幫助將不勝感激。我想我已經包含了所有相關的代碼,但是讓我知道是否還有其他我應該提供的內容。謝謝!
我實際上更新了我的div id,正是你發表這個問題後所說的。它現在在我的OP中更新。我評論了格式。html行,現在當我在表單中提交一些內容時,它不會呈現任何HMTL。我看到「http:// localhost:3000/images/update_tags?remote = true&image = 1」作爲URL,並且我看到了在Rails服務器中提交的參數,但沒有呈現HTML。這是否意味着我的JavaScript沒有被調用? JS文件是不是應該在控制器中調用的方法命名(在我的例子中是update_tags.js.erb)? – jnevelson
看到我更新的答案,我想你可能會缺少Rails jquery適配器,這是Rails如何處理AJAX調用 – iwasrobbed