Forum: Ruby on Rails rjs condition problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
7ed559ec7f9fc6a96ddc1690f06e7f80?d=identicon&s=25 Chris Olsen (chrisolsen)
on 2007-04-08 03:56
(Received via mailing list)
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.

  <div id="show_no_results_message">
    There are no tasks for this category
  </div>

  <ul>
    <div id="task_list"/>
  </ul>

# 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 <div id="show_no_results_message"> 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
7ed559ec7f9fc6a96ddc1690f06e7f80?d=identicon&s=25 Chris Olsen (chrisolsen)
on 2007-04-08 18:57
(Received via mailing list)
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.
917533d6bb5803079146c8bfb16d58b6?d=identicon&s=25 Francis Sinson (franee)
on 2007-04-08 22:18
Chris Olsen 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:

  <ul id="task_list">
  </ul>
7ed559ec7f9fc6a96ddc1690f06e7f80?d=identicon&s=25 Chris Olsen (chrisolsen)
on 2007-04-08 22:50
(Received via mailing list)
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 Sinson <rails-mailing-l...@andreas-s.net>
This topic is locked and can not be replied to.