0

ファイルのアップロードに 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: undefined method `name' for nil:NilClass. メソッド名がどこから、どのクラスからのものかわかりません。どんな助けでも本当にありがたいです。ありがとう

4

1 に答える 1

0

一見すると、フォームが ajax で動作するために必要な :remote => true を設定していないため、次のようにする必要があります。

<%= 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

また、最初の行を削除したことに注意してください。お役に立てれば。{:

于 2014-03-05T21:32:38.263 に答える