我有一个包含许多图像的页面,每个图像都有一个关联的文本框,用于提交该图像上的标签。每个图像和文本框都是通过局部视图呈现的。目前,我可以更新标签,并且通过整页刷新一切正常。我希望能够通过 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 方法中,我将图像的标签添加到数据库,然后想要重新加载该图像的部分视图。
这是控制器的重定向代码:
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,因此我们将不胜感激。我想我已经包含了所有相关代码,但是请告诉我是否还需要提供其他内容。谢谢!