【发布时间】:2011-07-15 23:35:19
【问题描述】:
我的页面包含许多图像,每个图像都有一个关联的文本框,用于在该图像上提交标签。每个图像和文本框都通过局部视图呈现。目前,我能够更新标签,并且通过整页刷新一切正常。我希望能够通过 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,因此将不胜感激。我想我已经包含了所有相关的代码,但如果还有什么我应该提供的,请告诉我。谢谢!
【问题讨论】:
标签: ruby-on-rails ajax ruby-on-rails-3 jquery