【发布时间】:2014-05-21 14:37:50
【问题描述】:
我一直关注 http://blog.markhorgan.com/?p=522 作为指南,以使用 ajax 回调更新表单中的图像。图片保存得很好,但我想做一些聪明的 ajax,这样页面就不会刷新。
这是我的代码:
edit.html.haml:
#promo-image
= render partial: 'promo_image'
_promo_image.html.haml:
= form_for( @property, remote: true) do |f|
= f.file_field :promo_image, :pattern => "^.+?\.(jpg|JPG|jpeg|JPEG|png|PNG|gif|GIF)$", :id => 'promo-image-upload'
= f.submit 'Update'
= image_tag @property.promo_image.url(:medium)
properties_controller.rb
def update
@property = Property.find(params[:id])
if @property.update(property_params)
format.js
else
render 'edit'
end
end
更新.js.haml:
$("#promo-image").html("#{escape_javascript(render partial: 'promo_image',)}");
使用上面概述的代码,我得到指向 format.js 行的错误:
PropertiesController 中的ArgumentError#update too little arguments
谁能看出我哪里出错了,或者指出我正确的方向?
非常感谢! 史蒂夫
更新
为了清楚起见,我希望能够更新此处所述的 Div:
更新.js.haml:
$("#promo-image").html("#{escape_javascript(render partial: 'promo_image',)}");
此代码有效,但会刷新整个页面:
respond_to do |format| format.html { redirect_to edit_property_path(@property) } format.js end
进一步更新
为了明确我的动机,我希望能够更新编辑页面上的元素,而不是被重定向到不同的元素,例如显示或索引。这是出于 UI 原因。上面的指南谈到了完全相同的事情。
最终更新
问题是因为我使用的是文件上传,这无法通过 ajax 实现。对于那些处于类似情况的人,请参见此处:Rails form_for with file_field and remote => true and format => :js
这里可能有一个解决方案,我将对此进行调查:https://github.com/JangoSteve/remotipart
感谢大家帮助我解决我的方法错误!
【问题讨论】:
-
请标记最有帮助的答案,以便未来的用户可以看到解决方案。
标签: javascript jquery ruby-on-rails ruby ajax