2012-12-17 11 views
20

Chciałbym zrobić prosty uploader plików za pomocą tag_form na Rails 3.2.8.
Ale gdy próbuję przesłać plik obrazu, pojawia się błąd mówiący

komunikat błędu (gdy próbuję przesłać plik obrazu)Błąd, Ruby on Rails: Kodowanie :: UndefinedConversionError w CoursesController # załącznik " xFF" z ASCII-8BIT na UTF-8

Kodowanie :: UndefinedConversionError w CoursesController # przywiązania
"\ xFF" z ASCII-8bit na UTF-8

bym wdzięczny, jeśli możesz mi pomóc z tym problemem.
Oto moje kody.


APP/Wygląd/show.html.erb

<%= form_tag(attachment_course_path, :action=>'attachment', :multipart => true) do %> 
<div class="field"> 
    <%= label_tag :file %> 
    <%= file_field_tag :file %> 
</div> 
<div class="actions"> 
    <%= submit_tag 'Submit' %> 
</div> 
<% end %> 


APP/kontroler/courses_controller.rb

def attachment 
    t = Time.now.strftime("%Y%m%d%H%M%S") 
    uploaded_io = params[:file] 
    File.open(Rails.root.join('public', 'upload', uploaded_io.original_filename), 'w') do |file| 
    file.write(uploaded_io.read) 
    end 
end 


konfiguracji/routes.rb

resources :courses, :only => [ :show ] do 
    member do 
    post :attachment 
    end 
end 

Odpowiedz

58

Spróbuj otworzyć plik w trybie binarnym ('wb' zamiast 'w'):

... 
    File.open(Rails.root.join('public', 'upload', uploaded_io.original_filename), 'wb') do |file| 
    file.write(uploaded_io.read) 
    end 

Ruby Docs IO Open Mode

+1

to działa! Dziękuję Ci bardzo! – wiz