2010-10-14 1 views
2

Я новичок в рельсах. Я хочу узнать о процессе загрузки файлов в rails. Может ли кто-нибудь помочь мне ... Спасибо, AlthafКак загрузить файл в рельсы?

+6

Заканчивать Рубин на Rails Guides (http://guides.rubyonrails.org/form_helpers.html#uploading-files) или Google "Рельсы загрузки файлов" или "рельсы файл для загрузки плагинов", чтобы узнать больше. Было бы лучше сначала сделать это исследование, а затем вернуться сюда, чтобы задать более конкретные вопросы о деталях, о которых вам нужно знать больше. – Jeff

+2

Или просто найдите Stackoverflow для других вопросов по этой теме («загрузка файлов rails»). Я считаю, что вы, должно быть, видели, как эти вопросы появляются, когда вы печатали свои слова. – Matt

ответ

5

Обычно gems/plugins используются для обработки загрузки файлов. Мой любимый, и, возможно, самый вездесущий - Paperclip.

По вашему мнению, вы должны сказать рельсы образуют хелперы, которые вы загружаете файл, как это:

<%= form_for @model, :html => { :multipart => true } do |form| %> 
+0

=> Спасибо за ваш ответ. Я хотел знать код загрузки, который должен быть записан в контроллере и в модели (если необходимо). Я знаком с частью просмотра для загрузки файлов –

+0

@ user475748 dude u не нужно писать какие-либо специальные строки кода для загрузки файла. Плагин Paperclip имеет эти строки кода. Просто следуйте блогу, указанному в моем ответе, и проверьте, что 5 минут railscast. –

+0

@ user475748: следуйте инструкциям для драгоценного камня Paperclip. Он обрабатывает внутренние детали загрузки файлов, позволяя вам просто указывать значения конфигурации и позволять им делать все остальное :) – Matchu

1

Вот метод о том, как загрузить файл без использования какой-либо драгоценный камень, и только с помощью рельсов,

Решение: =>

def create 
     @photo = Photo.new(photo_params) 
     uploaded_io = params[:photo][:photo] 
     File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file| 
      file.write(uploaded_io.read) 
     end 
     if @photo.save 
      flash[:success] = "The photo was added!" 
      redirect_to root_path 
     else 
      render 'new' 
     end 
     end 


def upload 
    uploaded_io = params[:person][:picture] 
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file| 
    file.write(uploaded_io.read) 
    end 
end 

И ваш form.html.erb в представлениях должны содержать это, это очень просто,

<%= form_for @photo do |f| %> 
     <%= f.file_field :photo %> 
     <div class="actions"> 
     <%= f.submit "Upload" %> 
     </div> 
    <% end %> 

и, наконец, модель должна иметь,

has_attached_file :image 

. ############################# ##################### Теперь вы можете загрузить любой файл.

спасибо. Поиграйте с рельсами.

Use <video_tag> for viewing video files. 
Use <audio_tag> for viewing audio files. 
Use <object>"link"</object> for viewing PDF or DOC files.