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