我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并未“安装”(并且收看)该字段。