Find works in view but not controller


#1

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.


#2

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?


#3

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.


#4

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


#5

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

:confused:


#6

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


#7

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.


#8

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: