Ошибка загрузки файла Rails "неопределенный метод` original_filename 'для nil: NilClass " - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть простая форма загрузки:

<%= form_for(:product, :url => {:action => 'update_product', :id => @product.id}, :html => {:multipart => true}) do |f| %>
<%= f.file_field(:product_image) %>
<%= submit_tag('Upload') %>
<% end %>

А в контроллере:

def update_product
    product = Product.find(params[:id])
    if(product)
        uploaded_image = params[:product][:product_image]
        params[:product][:product_image] = uploaded_image.original_filename
        product.update_attributes(params[:product])
        flash[:notice] = "Successfully updated!"
        redirect_to :action => 'edit_product', :id => product.id
    end
end

Когда я пытаюсь загрузить файл, у меня появляется ошибка "неопределенный метод` original_filename 'для nil: NilClass " Что я делаю не так?

Я использую Rails 3.0.10 и Ruby 1.9.2p290

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

Я предполагаю, что params [: product] [: product_image] равен nil.

Попробуйте использовать gem для загрузки файлов.

Источники

1.Скрепка

2.Карьерная волна

0 голосов
/ 19 мая 2013

пожалуйста, удалите эту строку:

params[:product][:product_image] = uploaded_image.original_filename

def update_product
    product = Product.find(params[:id])
    if(product)
        uploaded_image = params[:product][:product_image].original_filename
        product.update_attributes(params[:product])
        flash[:notice] = "Successfully updated!"
        redirect_to :action => 'edit_product', :id => product.id
    end
end
0 голосов
/ 19 сентября 2012

У меня был этот симптом, но периодически. Иногда браузер (Chrome), кажется, не выбирает файл из диалогового окна «Выбор файла». Однажды я увидел, что после двойного щелчка по файлу в диалоговом окне потребовалось несколько секунд, чтобы отобразить выбранный файл обратно в окне браузера. Я предполагаю, что если вы нажмете «отправить» до того, как файлы будут выбраны, вы получите эту ошибку.

     <h2>Choose file to upload ...</h2>
<%= form_tag({:action => :sched_file_uploader}, :multipart => true) do %>
  <%= file_field_tag 'schedfile' %>
  </br></br>
  <%= text_area_tag(:file_info, "<care to say anything about this file?>", :size => "24x6") %>
  </br></br>
  <input name="upload" type="submit" value="Upload" />
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...