hi -
I’m adapting a file upload from the Agile book. I have two models,
Challenge and MediaFile. The form looks like this:
<%form_for :challenge, :url => {:action
=>:create}, :html=>{:multipart=>true} do |f|%>
<%fields_for :media_file do |m|%>
Please select a media file: <%=m.file_field :uploaded_data%>
…
The MediaFile model has a method defined ‘uploaded_data’
def uploaded_data=(picture_field)
name = base_part_of(picture_field.original_filename)
content_type = picture_field.content_type.chomp
data = picture_field.read
end
This works fine, unless the user doesn’t select a file for upload. In
this case, picture_field is a blank string, and the model has no
attribute original_filename, etc. So the exception is:
undefined local variable or method `original_filename’ for #<MediaFile:
0x574b3c8>
The question is, how do I detect when a user hasn’t selected a file
for upload, and gracefully add an error to the errors collection? I
wonder if this has something to do with having two models? Like I
said, it works just fine when the user selects a file.
Thanks for any help,
Dino