我正在使用rails 3,我已经安装了paperclip gem。我有一个表单上传照片和图片视图,以便在保存后显示照片。 我遇到的问题是,
如果我在我的html文件中没有包含rails.js,它会保存文件并且它会给出已完成406不可接受的错误。
如果我在html中包含rails.js,它会执行format.js但不保存文件。
我的代码如下所示:
_form.html.erb中的:
<%= form_for @image, :url => {:controller => "settings", :action => "create"}, :html => {:multipart => true, :remote => true, :method => "post"} do |f| %>
<% if @image.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@image.errors.count, "error") %> prohibited this image from being saved:</h2>
<ul>
<% @image.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.hidden_field :user_id, :value => current_user.id.to_s %>
<p>
<b> Picture </b><br/>
<%= f.file_field :pic %>
</p>
<div class="actions">
<%= f.submit "Upload Image" %>
</div>
<% end %>
以上表格中的@image = Image.new。
在我的控制器中:
def create
@image = Image.new(params[:image])
if @image.save
@user_image = Image.first(:order => "created_at DESC", :conditions => ["user_id=?", current_user.id])
end
respond_to do |format|
format.js do
render(:create) { |page| page.reload }
end
end
end
答案 0 :(得分:1)
您无法通过AJAX请求上传文件。见this question出现的位置。
在此问题中,我们讨论了通过上传上传文件的一些选项:uploading a file via ajax with php
我建议您查看Plupload
等内容