2012-10-21 4 views
8

Railsでファイルのアップロードに問題が発生しました。私はform_for(@some_model)と一緒に使用できるfile_field :fileヘルパーを見つけました。しかし、私は、これらのタグは質量の割り当てによっていくつかのモデルを作成/編集するために使用されるため、このケースの用途は見つけられません。 AFAIKは、ファイルアップロードを典型的なフィールドとして扱うことはできません(File upload won't work in Ruby on Rails 3 using Multipart Form参照)。このような場合は、アップロードしたファイルを手動で操作する必要があります。だから、なぜ誰かがモデル編集の一環としてファイルアップロードをしたいと思っているのだろうか?ファイル属性:theresの無いため、上記のRuby On Rails:form_forのfile_fieldの例

photo.rb

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

photo_form.html.erb

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

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

    <%= f.file_field :file %> 

    <%= f.submit %> 

<% end %> 

photos_controller.rb

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

ラインは、失敗します。以前に処理して手動で:paramsから削除する必要があります。もう一度 - そのようなタグの実際の使用法はありますか?

+0

を持っている場合、あなたが持っているなら、私は、ちょっと知ってみましょう役に立てば幸い、十分自体を説明してだと思います他のフィールドやラベルを持っている間にform_forを使ってファイルをアップロードする方法を知っていたら、ここでそれを共有してください。私もこの仕事をしようとしています。 – learner

+0

そして、宝石を使う必要がないならいいですね。 – learner

+0

あなたのビュー '<%= f.file_field:filename%>'で 'attr_accesible:name、:file'を試してみたらどうなりますか? – mmichael

答えて

3

は、私はRailsのでxmlファイルをアップロードするためにこれを使用することを覚えて

ビュー:

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

コントローラ:それはform_tagを使用しているが、それはには難しいことではないでしょう

def upload 
    file_data = params[:xml_file] 
end 

そのフォームに他の情報も追加してください。

3

私はあなたが私はそれを使用しています方法の例だろう、私はそれが私はこれが

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

はあなたがどんな疑問