0

Rails、Mongoid、および Carrierwave を使用してファイルをアップロードしようとしています。送信をクリックすると、POST リクエストの「image」の値は{url : null}. logger を使用してコントローラの create アクションから「image」の値を表示すると、その値は"C:\\fakepath\\tree.png"実際のパスではないため、File.open を使用して直接保存してファイルを取得することはできません。アップローダーでフォームを書くのはこれが初めてなので、自分が何をしているのかよくわかりません。

画像をアップロードするための私のフォームは次のとおりです。

<h1>New Post</h1>
<form id="new-post" name="post" enctype="multipart/form-data">
  <div class="field">
    <label for="name"> Name</label><br />
    <input type="text" name="name" id="name" value="<%= name %>" >
  </div>
  <div class="field">
    <label for="image"> Image</label><br />
    <input type="file" name="image" id="image" value="<%= image %>" >
  </div>
  <div class="field">
    <label for="content"> Content</label><br />
    <textarea rows="4" cols="50" name="content" id="content" value="<%= content %>" ></textarea>
  </div>
  <div class="actions">
    <input type="submit" value="Create Post" />
  </div>
</form>

キャリアウェーブをサポートするために追加したものは次のとおりです。

Gemfile:

gem "carrierwave"
gem "carrierwave-mongoid", :require => 'carrierwave/mongoid'

ポストモデル:

attr_accessible :name, :content, :image
mount_uploader :image, ImageUploader

画像アップローダ:

class ImageUploader < CarrierWave::Uploader::Base
  storage :file
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
4

1 に答える 1

0

このガイドを試して開始してください: http://www.tutorialspoint.com/ruby-on-rails/rails-file-uploading.htm

fakepath のことは問題ありません。実際には、パス自体は気にしません。アップロードされたバイト データが気になります。

于 2013-07-02T16:37:00.037 に答える