2012-10-21 16 views
8

Rails'de dosya yükleme sorunuyla karşılaştım. form_for(@some_model) ile kullanılabilecek file_field :file yardımcı buldum. Ancak, bu etiket için herhangi bir kullanım bulamıyorum, çünkü bu etiketler bir model oluşturmak/düzenlemek için kitle ataması ile kullanılır. AFAIK, dosya yükünü tipik alan olarak işleme olanağı yoktur (Bkz. File upload won't work in Ruby on Rails 3 using Multipart Form). Böyle bir durumda, yüklenen dosya üzerinde manuel işlem gereklidir. Öyleyse, birisi neden bir dosya yüklemesini bir parça düzenlemenin parçası olarak koymak ister?Ruby On Rails: form_for üzerindeki file_field örneği

photo.rb

class Photo < ActiveRecord::Base 
     attr_accessible :name, :filename, 
    end 

photo_form.html.erb

def create 
    @photo = Photo.new(params[:photo]) 

çizgi üzerinde başarısız

<%= form_for(@photo, :multipart => true) do |f| %> 

    <%= f.label :name %> 
    <%= f.text_field :name %> 

    <%= f.file_field :file %> 

    <%= f.submit %> 

<% end %> 

photos_controller.rb, çünkü gidecekseniz: dosya özniteliği. Daha önce ele alınmalı ve :params'dan manuel olarak kaldırılmalıdır. Bir kez daha - bu tür etiketler için gerçek kullanım var mı?

+0

Hey sen, varsa herhangi bir şüpheniz varsa bana bildirin yardımcı olur, yeterince kendini iyi açıklıyor bence Başka alan ve etiketler kullanırken form_for kullanarak dosya yükleme işlemini nasıl gerçekleştireceğimize dair herhangi bir fikriniz var, lütfen buradan paylaşın. Bu işi yapmaya bile çalışıyorum. – learner

+0

Ve herhangi bir mücevher kullanmaya gerek yok ise güzel olurdu. – learner

+0

Eğer attr_accesible: name,: file' denerseniz ve görünümünüzde ne olur? <% = F.file_field: filename%> '? – mmichael

cevap

3

ben Rails bir xml dosyası yüklemek için bu kullanılan unutmayın

görünüm:

<%= form_tag({action: :upload}, multipart: true) do %> 
    <%= file_field_tag 'xml_file' %> 
    <%= submit_tag 'Submit' %> 
<% end %> 

kontrolör: Bu form_tag kullanıyor ama zor olmaz

def upload 
    file_data = params[:xml_file] 
end 

Bu formda başka bilgileri de ekleyin.

3

Sana bir örnek bunu kullanıyorum olacak nasıl ben bu

<%= form_for @item do |f|%> 
    <%= f.file_field :photo, accept: 'image/png,image/jpeg'%> 
<% end %> 

Eğer