这是我的观点:
<%= form_for item, :url => comment_item_path(item), :html => {:remote => true, 'portal-transform' => true, :multipart => true} do |f| -%>
<%= f.fields_for :updates, Update.new, :index => nil do |m| -%>
<%= m.text_area :comment %><br />
<%= m.file_field :attachment %>
<% end -%>
<%= f.submit "Comment" %>
<% end -%>
控制器动作:
respond_to do |format|
format.js do
render :json => {}
end
end
当我提交的表单中只输入了comment
(text_area)字段并将attachment
(file_field)字段留空时,它会完全呈现预期的内容。
但是,当我使用attachment
提交表单时,结果是:
Completed 406 Not Acceptable in 56ms
我出了什么问题?请指导。
感谢。
答案 0 :(得分:0)
出于安全原因,浏览器不允许通过AJAX上传文件。但是,如果您将表单的file_field保留为空白,则表单会正常提交而不会出现错误,这可以解释您所看到的行为。
要在Rails 3中通过AJAX上传文件,您可以使用Remotipart gem。
http://os.alfajango.com/remotipart/
以下是一个示例用法:
http://thechangelog.com/post/7576700785/remotipart-rails-3-ajax-file-uploads-made-easy