I am trying to set up an upload image page where the user can optionaly upload
an image url instead. I am using carrierwave
The view:
<%= form_for @rating, :html => {:multipart => true} do |f| %>
<p>
<%= f.file_field :pic_url %>
</p>
<p>
<%= f.label :remote_pic_url_url, 'or image url' %>
<br/>
<%= f.text_field :remote_pic_url_url %>
</p>
<div class="actions">
<%= f.submit 'Upload Picture', :class => 'btn btn-primary' %>
</div>
the model:
class Rating < ActiveRecord::Base
attr_accessible :pic_url, :remote_pic_url_url, :rating
mount_uploader :pic_url , ImageUploader
end
when I try to input just the image url, I get a error msg:
Pic url You are not allowed to upload "" files, allowed types: jpg, jpeg, gif, png
How do I make that field optional. I was under the impression that remote_{columnName}_url is the convention for adding additional url field in carrierwave, and that will take care of that for me..
controller code:
# POST /ratings
# POST /ratings.json
def create
@rating = Rating.new(params[:rating])
respond_to do |format|
if @rating.save
format.html { redirect_to @rating, :notice => 'Rating was successfully created.' }
format.json { render :json => @rating, :status => :created, :location => @rating }
else
format.html { render :action => "new" }
format.json { render :json => @rating.errors, :status => :unprocessable_entity }
end
end
end
See this thread.
The error you’re getting (
You are not allowed to upload "" files, allowed types: jpg, jpeg, gif, png) is the same one you get with the following:The problem here is that Carrierwave opens the URL, then calls the resulting file with
base_uri.path, which returns/, hence the error. If you were entering a URL which has no extension, then this is the cause.If not, then I’m not sure why it’s not working. I use the same approach in my own project (i.e. setting
remote_{columnname}_urland then saving the record) and it works fine. Although I don’t normally use the extension whitelist validator, I added one and (in the console at least) it works fine as well with valid URLs (i.e. URLs pointing to images with valid extensions).Can you try the steps below in the console and see if it saves properly? (insert some valid URL to a JPG/GIF/PNG file):