# Rjs condition problem

**URL:** <https://www.ruby-forum.com/t/rjs-condition-problem/91389>\
**Category:** Rails\
**Created:** [April 8, 2007, 3:56am UTC](https://www.ruby-forum.com/t/rjs-condition-problem/91389 "2007-04-08T03:56:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![chrisolsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c6cbf5/32.png) [@chrisolsen](https://www.ruby-forum.com/u/chrisolsen)\
**Post date:** [April 8, 2007, 3:56am UTC](https://www.ruby-forum.com/t/rjs-condition-problem/91389/1 "2007-04-08T03:56:48Z")

</div>

I have a list that is being populated through an ajax response and if  
the number of items to be populated is zero, I would like to show a  
message informing the user that there is no items.

Here is the portion of the rhtml file that contains the div tags that  
would hold the list of items and the “no items” message.

 There are no tasks for this category 

# The rjs file code

page.replace\_html(“task\_list”, :partial =\> “task”, :collection=\>  
@tasks)  
page[“show\_no\_results\_message”].hide if @tasks.nil? || @tasks.count ==  
0 #This is the line that doesn’t work

I had it working before the ajax was inserted since it was easy to  
include the logic within the rhtml file to set the style (display) of  
the

 to none.

Now that it is done through ajax I am not sure how to do this without  
inserting the logic within the rjs file, which, I am sure is the  
proper way to do it, but I just can’t figure out what is wrong.

There is actually 2 problems with the line marked as not working:

  1. page[“show\_no\_results\_message”].hide if @tasks.nil? || @tasks.count  
== 0  
having @tasks.count == 0 causes none of the tasks to be rendered  
to the list. Unfortunately, I cannot get Firebug to work on my  
machine so I am not exactly sure what is wrong with the condition.

  2. page[“show\_no\_results\_message”].hide if @tasks.nil?  
Withouth the count check allows the tasks to be shown on the  
screen, but does not hide the “show\_no\_results,” div tag.

Any tips would be appreciated.

Thanks

---

<div class="post-metadata">

**Author:** ![chrisolsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c6cbf5/32.png) [@chrisolsen](https://www.ruby-forum.com/u/chrisolsen)\
**Post date:** [April 8, 2007, 6:57pm UTC](https://www.ruby-forum.com/t/rjs-condition-problem/91389/2 "2007-04-08T18:57:43Z")

</div>

The problem is in this line:

> > page[“show\_no\_results\_message”].hide if @tasks.nil? || @tasks.count == 0

more specifically in this condition:

> > @tasks.count == 0

if I make a tweak, like so:

> > page[“show\_no\_results\_message”].hide if @tasks.count == 0  
> > it fails. I have also tried tacking on .to\_i methods to both the  
> > count and 0, then performing the bool op, but it still does not work.

---

<div class="post-metadata">

**Author:** ![chrisolsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c6cbf5/32.png) [@chrisolsen](https://www.ruby-forum.com/u/chrisolsen)\
**Post date:** [April 8, 2007, 10:18pm UTC](https://www.ruby-forum.com/t/rjs-condition-problem/91389/3 "2007-04-08T22:18:59Z")

</div>

Chris O. wrote:

> The problem is in this line:
> 
> > > page[“show\_no\_results\_message”].hide if @tasks.nil? || @tasks.count == 0
> 
> more specifically in this condition:
> 
> > > @tasks.count == 0
> 
> if I make a tweak, like so:
> 
> > > page[“show\_no\_results\_message”].hide if @tasks.count == 0  
> > > it fails. I have also tried tacking on .to\_i methods to both the  
> > > count and 0, then performing the bool op, but it still does not work.

There is no count method for an array. Try @tasks.empty? instead.

I also don’t think this is valid html, where you put a div as a child of  
a ul tag. It should only be li’s. Instead put the task list id in the  
ul and get rid of the div:

---

<div class="post-metadata">

**Author:** ![chrisolsen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c6cbf5/32.png) [@chrisolsen](https://www.ruby-forum.com/u/chrisolsen)\
**Post date:** [April 8, 2007, 10:50pm UTC](https://www.ruby-forum.com/t/rjs-condition-problem/91389/4 "2007-04-08T22:50:24Z")

</div>

That would make sense then 🙂 I could’ve swear that I saw that  
somewhere, but now that I check my ruby book I see it isn’t a valid  
method.

As for the div, ya I got rid of that. At one point I wasn’t sure  
exactly how the replace\_html method worked and didn’t want to lose the  
ul tag.

Thanks for you help.

On Apr 8, 2:18 pm, Francis S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
