Rails render_to_string problem

Hi
I`m trying to test my controller with rspec and always get an error.
The error is in the render_to_string method call (without it test
works fine). So could u please help me with that?

users_controller.rb:

def update
@user.update_attributes!(params[:user])

redirect_to @user, :status => 202, :text =>

render_to_string(:partial => “users/show”, :type => “json”, :locals =>
{:user => @user})
#notice, that redirect_to was reinitialized and :text is a
parameter for response_body
end
_show.tokamak
user {
id user.id
email user.email
username user.username
}
spec file
it “should NOT update user username” do
username = @user.username
put ‘update’, :id => @user.id, :user => {:username => username
+“abc”}, :format => :json
response.status.should be(202)
response.headers[“Location”].length.should be > 0
puts response.body
@user.reload
@user.username.should eq(username)
end
end
So I get an error:

Failure/Error: put ‘update’, :id => @user.id, :user => {:username =>
username+“abc”}, :format => :json ActionView::Template::Error: You
have a nil object when you didn’t expect it! You might have expected
an instance of Array. The error occurred while evaluating nil.[] # C:/
Users/makaroni4/free_frog/ffapi/app/views/users/_show.tokamak:1:in
_app_views_users__show_tokamak___509498818 _32151168_368311673’ # C:/
Users/makaroni4/XXX/XXX/app/controllers/users_controller.rb:22:in
update’ # ./users_controller_spec.rb:34:in `block (4 levels) in ’

So may be I call render_to_string method wrong?

On Tuesday, May 17, 2011 6:40:26 AM UTC-6, makaroni4 wrote:

Hi
I`m trying to test my controller with rspec and always get an error.
The error is in the render_to_string method call (without it test
works fine). So could u please help me with that?

Does the controller action run fine outside the context of testing?

parameter for response_body
end

It seems to me the problem may be related specifically to your usage of
the
tokamak gem. Haven’t used it myself and don’t know much about it, but
your
error message (below) if you read it claims the error happens on line
one of
your tokamak-based template.

+“abc”}, :format => :json
username+“abc”}, :format => :json ActionView::Template::Error: You
have a nil object when you didn’t expect it! You might have expected
an instance of Array. The error occurred while evaluating nil.[] # C:/
Users/makaroni4/free_frog/ffapi/app/views/users/_show.tokamak:1

See how the error is in _show.tokamak:1? If this controller action works
outside testing then perhaps the problem is the setup/integration of
tokamak
w/rspec. Or, if it doesn’t even work in a normal web request, then
perhaps
your _show.tokamak just has an error (can’t say since its a DSL I know
nothing about).

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs