我CarrierWave
工作正常,直到我不得不對我的表更改字段名(其中CarrierWave
被安裝到現場),現在當我嘗試上傳文件,我得到:錯誤上載的文件上傳波
**ActiveRecord::StatementInvalid in PhotosController#create**
**TypeError: can't cast ActionDispatch::Http::UploadedFile to string: INSERT INTO "photos" ("album_id", "created_at", "rel", "road", "updated_at") VALUES (?, ?, ?, ?, ?)**
我的代碼:
Photo.rb
class Photo < ActiveRecord::Base
belongs_to :album
attr_accessible :legend, :road, :rel
mount_uploader :road, UpperUploader
end
的上傳
class UpperUploader < CarrierWave::Uploader::Base
storage :file
def store_dir
"../app/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.album_id}"
end
上PhotosController的創建操作
def new
@photo = Photo.new
end
def create
params[:photo][:road].each do |p|
photo = Photo.new
photo.road = p
photo.rel = p
photo.album_id = session[:current_album]
photo.save
end
render 'manage'
end
def photo_params
params.require(:photo).permit(:legend, :road, :album_id, :rel)
end
我_form部分用來上傳文件:
<%= form_for @photo , html: { multipart: true } do |f| %>
<% if @photo.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@photo.errors.count, "error") %> prohibited this photo from being saved:</h2>
<ul>
<% @photo.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :road %><br>
<%= f.file_field :road, :multiple => 'multiple' %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我改變上傳列名(什麼是「道路「),通過遷移,當然,我試圖改變所有'路徑'的名字我的代碼是'道路'。我試圖關閉並打開服務器多次,錯誤仍然存在。
任何幫助?
PS:本
photo.rel = P
線導致錯誤。如果我評論它,一切正常。但爲什麼這條線導致這個問題呢?是的,我想要一個「rel」字段,它是「road」字段的完全副本,但CarrierWave並未「安裝」(並且收看)該字段。