Any advice would be great.
Thanks in advance,
Jen.
If statement:
#posts to the data model.
if !:upload.nil?
post = Upload.save(params[:upload])
puts "file uploaded"
render 'upload'
repo.commit_all('params[:message]')
else
redirect_to 'upload'
end
Are you trying to check whether param[:upload] has a value? Is so
then you can use
if !params[:upload].blank?
blank? returns true for nil or an empty string. nil? returns true for
nil but false for empty string.
Colin
> post = Upload.save(params[:upload])
> puts "file uploaded"
> render 'upload'
> repo.commit_all('params[:message]')
> else
> redirect_to 'upload'
> end
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to
> rubyonrails-ta...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>
undefined method `original_filename' for nil:NilClass
Rails.root: /home/resource_portal/website
rake-0.8.7/ruby/1.9.1/gems/activesupport-3.0.3/lib/active_support/whiny_nil.rb:48:in `method_missing'
app/models/upload.rb:13:in `save'
app/controllers/upload_controller.rb:13:in `create'
rake-0.8.7/ruby/1.9.1/gems/actionpack-3.0.3/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
rake-0.8.7/ruby/1.9.1/gems/actionpack-3.0.3/lib/abstract_controller/base.rb:151:in `process_action'
rake-0.8.7/ruby/1.9.1/gems/actionpack-3.0.3/lib/action_controller/metal/rendering.rb:11:in `process_action'
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/74m04USkgCsJ.
You said that you have taken note of the previous replies, but looking
at the code in upload_controller.rb you have not tested
params[:upload] before calling Upload.save in the create action, which
was the point of your original question I think. As I previously
suggested you need to use something like
if !params[:upload].blank?
to prevent save being called when params[:upload] is nil or empty.
What else you need to do in that action when it is empty I do not know
as I do not know the details of what you want to achieve.
Colin
I am not sure where in the process of attempting to submit a file this
check needs to happen, though I assume it is before the post occurs.
If this explanation is not clear enough please let me know and I will
attempt to explain it better.
I am not sure if the fact that I am not using a database impacts on
this. As stated in my previous post the files are uploaded to a
directory, then committed to a git repo.
Thanks in advance for any further help,
Jen.
Note the code below does work, as long as a file is selected for upload.
Controller code:
def create
repo = Grit::Repo.new("/home/resource_portal/website/public/data/upload")
if !params[:upload].blank?
#posts to the data model.
post = Upload.save(params[:upload]), (params[:message])
puts "file uploaded"
repo.commit_all(:message)
render 'upload'
else
flash.now[:error] = "Please select a file to upload"
redirect_to 'upload'
end
end
end
It could not possibly give you exactly the same error on the same line
of code, as the test would have prevented that line from being
executed. It may have been a similar error on a different line of
code. As I said before you can test for the field blank or nil using
params[:upload].blank?
Colin
Thanks to everyone else for help and suggestions so far. Hopefully I'll
solve it tomorrow!
Thanks,
Jen.
> --
> You received this message because you are subscribed to the Google
> Groups "Ruby on Rails: Talk" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-/rSyybUgdcXwJ.