Forum: Ruby on Rails Find works in view but not controller

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.
Milo T. (Guest)
on 2007-02-28 19:21
Part of my application should show a list of all users on the system who
agreed to have their details revealed. So, I have an action like this:

def view_users
  @users = User.find(:all,:conditions=>"reveal = 1",:order=>"login
DESC")
end

In the associated view, @users is an object of nilclass and the app.
breaks as it tries to iterate over the @users array. However, if I
include this at the top of view_users.rhtml

<% @users = User.find(:all,:conditions=>"reveal = 1",:order=>"login
DESC") %>

...then everything works as expected.Why should this be?
Thanks.
Philip H. (Guest)
on 2007-03-02 02:13
(Received via mailing list)
> include this at the top of view_users.rhtml
>
> <% @users = User.find(:all,:conditions=>"reveal = 1",:order=>"login
> DESC") %>
>
> ...then everything works as expected.Why should this be?

My guess is that somewhere (perhaps an after_filter or a partial) you're
setting @users to nil.

What happens if in your controller right after that find() call you do:

render :text => @users.inspect, :layout => false
return

Do you get all your users then?
Milo T. (Guest)
on 2007-03-02 11:24
Philip H. wrote:
> What happens if in your controller right after that find() call you do:
>
> render :text => @users.inspect, :layout => false
> return
>
> Do you get all your users then?

That works - many thanks.
Christoph O. (Guest)
on 2007-03-02 13:31
(Received via mailing list)
Hello there,

I ran into a problem with my shiny new RESTful controller.
One of it's partial templates is using a custom member action's
url helper created by map.resources, e.g. "something_model_url(id)".
This works perfectly when I try it in my webbrowser, but my functional
test fails when it gets to "display" the mentioned partial, telling
me:
Exception: undefined method "something_model_url" for #<#<Class...>
On line #22 of (...)

Obviously the helper does not get defined. I already know that the
routing is not being processed in functional tests due to performance
reasons, but there must be a way to still access my partials?! So
I guess I am searching for the magic "bring me some url-helpers" trigger
in my functional tests. Any suggestions will be greatly appreciated!

Greetings,
Christoph
Philip H. (Guest)
on 2007-03-02 18:10
(Received via mailing list)
> Philip H. wrote:
>> What happens if in your controller right after that find() call you do:
>>
>> render :text => @users.inspect, :layout => false
>> return
>>
>> Do you get all your users then?
>
> That works - many thanks.

Then somewhere after your find() call, but before your view you are
trashing @users....

:/
Bill W. (Guest)
on 2007-03-02 19:21
(Received via mailing list)
Just to add a quick note about a 'gotcha' that bit me in the early
days...

Philip H. wrote:
> Then somewhere after your find() call, but before
> your view you are trashing @users....

If you're doing a redirect_to, that'll trash your instance variables.

Best regarsd,
Bill
Milo T. (Guest)
on 2007-03-02 19:25
Bill W. wrote:
> If you're doing a redirect_to, that'll trash your instance variables.

All fixed now, thanks.
This has been useful at improving my understanding of how rails works.
Christoph O. (Guest)
on 2007-03-06 17:15
(Received via mailing list)
Hi Folks,

I still can't figure out what the problem could be. It seems it's
only the singular_url helpers that are missing, the plural_url helpers
do not lead to test failure. Did really no one else run into something
like this?

Greetings,
Christoph

Christoph O. schrieb:
This topic is locked and can not be replied to.