我使用gem remotipart上传文件。 以下是我的观点:
<%= form_for @file_upload, :id => "form_feedback_attachment", :url => { :controller => "widgets", :action => "feedback_attachment_upload" }, :html => {:multipart => true} do |f| %>
<td class="rightcol"><%= f.file_field :feedback_attachment, :id => "feedback_attachment_file" %>
<%= f.submit "Upload" %></td>
<% end %>
我的控制器:
@file_upload = FileUpload.new
@file_upload.feedback_attachment = params[:file_upload][:feedback_attachment]
respond_to do |format|
if @file_upload.save
format.js
end
end
但是我收到了这个错误: NoMethodError:nil的未定义方法`name':NilClass。我不知道方法名称和类的位置。任何帮助将非常感激。感谢
答案 0 :(得分:0)
乍一看 - 你没有设置:remote =&gt; true,这是表单使用ajax所必需的,所以它应该是:
<%= form_for @file_upload, :remote => true, :id => "form_feedback_attachment", :url => { :controller => "widgets", :action => "feedback_attachment_upload" }, :html => {:multipart => true} do |f| %>
在控制器上,如果你将这个动作用于别的东西,这可能是个问题,所以你应该像这样包装它:
if @file_upload
@file_upload.feedback_attachment = params[:file_upload][:feedback_attachment]
respond_to do |format|
if @file_upload.save
format.js
end
end
end
另请注意,我已删除第一行。希望这可以帮助。 {: