我按照“AJAX file uploads in Rails using attachment_fu and responds_to_parent”文章中的说明操作。就我而言,我使用Ruby on Rails 3和Paperclip。
我所做的是以下内容:
我在终端中安装了运行此命令的'respons_to_parent'插件:
rails plugin install git://github.com/itkin/respond_to_parent.git
安装完成后,我重新启动Apache。
在我看来,我有:
<%= form_for(@user, :html => { :multipart => true, :target => 'upload_frame' }) do |f| %>
<%= f.file_field :avatar %>
<%= f.submit "Submit" %>
<% end %>
<div id="test">Here is a test</div>
<div id="stuff">Here is some stuff</div>
<iframe id='upload_frame' name="upload_frame" style="width:1px;height:1px;border:0px" ></iframe>
在我的控制器中我有
def action
respond_to do |format|
...
format.js {
responds_to_parent do
render :update do |page|
page.replace_html :test, "This is the resulting test"
page << "alert($('stuff').innerHTML)"
end
end
end
end
end
尝试提交表单,所有关于文件上传工作(Paperclip句柄correclty文件,...)和日志文件中都没有错误。
仅不起作用的是AJAX部分。在示例中
page.replace_html :test, "This is the resulting test"
page << "alert($('stuff').innerHTML)"
不要更新页面(BTW:这些应该在“主视图”或“iframe视图”中有效??)。如果我尝试删除'respons_to_parent'语句或将它们放在'action.js.rjs'文件中,它也不起作用。
哪里错了?
答案 0 :(得分:0)
<强>解决强>
我忘了添加:url => users_account_path +. "js"
。所以观点变成了:
<%= form_for(@user, :url => users_account_path +. "js", :html => { :multipart => true, :target => 'upload_frame' }) do |f| %>