Загрузите файл Rails Jquery, используя remotipart gem NoMethodError: неопределенный метод `name'

Я использую 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: неопределенный метод `name'для nil:NilClass. Я понятия не имею, откуда имя метода и из какого класса. Любая помощь могла бы быть полезна. Спасибо

1 ответ

На первый взгляд - вы не установили:remote => 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

Также обратите внимание, что я удалил первую строку. Надеюсь это поможет. {:

Другие вопросы по тегам