top button
Flag Notify
    Connect to us
      Site Registration

Site Registration

How can I check if a cell is empty using RubyXL?

+1 vote
509 views

I'm trying to check if a cell is empty because when the parser reaches an empty cell it throws NoMethodError (undefined methodvalue' for nil:NilClass)`

This is what I was trying to do:

1.upto(inventory[0].sheet_data.size) do |line| @projectCode = inventory[0][line][1].value unless inventory[0][line][1].value.nil? @ProjectName = inventory[0][line][2].value unless inventory[0][line][2].value.nil? end

also tried

1.upto(inventory[0].sheet_data.size) do |line| @projectCode = inventory[0][line][1].value unless inventory[0][line][1].value.empty? @ProjectName = inventory[0][line][2].value unless inventory[0][line][2].value.empty? end

The cells with values have no issues, but when it reaches 2 empty rows below all data it throws this... Can anyone tell me how to do this?

posted Oct 17, 2013 by Mandeep Sehgal

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button

1 Answer

+1 vote

Is it not fairly obvious? The error message says you are calling the method value on something that is nil, so presumably inventory[0][line][1] is nil. So just test that for nil. There are nicer ways of coding this however, I might use
@projectCode = inventory[0][line][1].value if inventory[0][line][1]

However you seem to be in a loop that keeps overwriting @projectCode but perhaps you have snipped out some of the code.

answer Oct 17, 2013 by Naveena Garg
tried @projectCode = inventory[0][line][1].value if inventory[0][line][1].nil?
and even testing inventory[0][line].nil? and inventory[0].nil? and I keep getting the same error undefined method `[]' for nil:NilClass
I am overwriting @projectCode with each iteration because there's a comparison later.
if inventory[0] gives you that message then inventory must be nil. Put some debug code in to check out what is happening. The simplest way is to insert puts statements to show the values of variables. The output will appear in the server terminal. For more sophisticated debug techniques see the Rails Guide on Debugging.
Similar Questions
0 votes

I have deployed a ruby on rails app on two instances of production server, now there are two separate log file are being created for different instances. My question is how I can make a single log file for both the instances?

+1 vote

I have just started with rails. I am making a attendance web app. I want to insert student attendance into attendances table and unable to do it as the form just inserts only last entry of the form. Student table and Attendances table have associations (has_many,belongs_to).

Please let me know how the form should be and controller API should look like.

...