Rails Jquery上传文件使用remotipart gem NoMethodError:undefined method`name'

时间:2013-08-22 04:54:55

标签: ruby-on-rails-3 forms file-upload jquery-file-upload remotipart

我使用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。我不知道方法名称和类的位置。任何帮助将非常感激。感谢

1 个答案:

答案 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

另请注意,我已删除第一行。希望这可以帮助。 {: