On Jan 21, 2009, at 2:00 PM, Mohammad Abed wrote:

>
> Thanks for the advice David, I did remove the code from the  
> controller.
> I've looked the stack trace. What is interesting, it does generate the
> correct sql. Unfortunately, I don't understand enough about RoR to
> decipher the log
>
> **********************
> Processing GalleriesController#index (for 127.0.0.1 at 2009-01-21
> 13:56:31) [GET]
>  Parameters: {"action"=>"index", "controller"=>"galleries"}
>  Gallery Load (2.0ms)   SELECT * FROM `galleries`
>
>
> RuntimeError (Called id for nil, which would mistakenly be 4 -- if you
> really wanted the id of nil, use object_id):
>    /app/controllers/galleries_controller.rb:8:in `index'

Aha!  OK, what is on line 8?  (If that doesn't solve it for you, paste  
the first part of the galleries_controller.rb up to the end of the  
index method.)

-Rob

>
>    /vendor/rails/actionpack/lib/action_controller/base.rb:1253:in
> `send'
>    /vendor/rails/actionpack/lib/action_controller/base.rb:1253:in
> `perform_action_without_filters'
>    /vendor/rails/actionpack/lib/action_controller/filters.rb:617:in
> `call_filters'
>    /vendor/rails/actionpack/lib/action_controller/filters.rb:610:in
> `perform_action_without_benchmark'
>    /vendor/rails/actionpack/lib/action_controller/benchmarking.rb: 
> 68:in
> `perform_action_without_rescue'
>    /usr/local/lib/ruby/1.8/benchmark.rb:293:in `measure'
>    /vendor/rails/actionpack/lib/action_controller/benchmarking.rb: 
> 68:in
> `perform_action_without_rescue'
>    /vendor/rails/actionpack/lib/action_controller/rescue.rb:136:in
> `perform_action_without_caching'
>    /vendor/rails/actionpack/lib/action_controller/caching/ 
> sql_cache.rb:13:in
> `perform_action'
>    /vendor/rails/activerecord/lib/active_record/connection_adapters/ 
> abstract/query_cache.rb:34:in
> `cache'
>    /vendor/rails/activerecord/lib/active_record/query_cache.rb:8:in
> `cache'
>    /vendor/rails/actionpack/lib/action_controller/caching/ 
> sql_cache.rb:12:in
> `perform_action'
>    /vendor/rails/actionpack/lib/action_controller/base.rb:524:in  
> `send'
>    /vendor/rails/actionpack/lib/action_controller/base.rb:524:in
> `process_without_filters'
>    /vendor/rails/actionpack/lib/action_controller/filters.rb:606:in
> `process_without_session_management_support'
>    /vendor/rails/actionpack/lib/action_controller/ 
> session_management.rb:134:in
> `process'
>    /vendor/rails/actionpack/lib/action_controller/base.rb:392:in
> `process'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:183:in
> `handle_request'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:110:in
> `dispatch_unlocked'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:123:in
> `dispatch'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:122:in
> `synchronize'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:122:in
> `dispatch'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:132:in
> `dispatch_cgi'
>    /vendor/rails/actionpack/lib/action_controller/dispatcher.rb:39:in
> `dispatch'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/ 
> mongrel/rails.rb:76:in
> `process'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/ 
> mongrel/rails.rb:74:in
> `synchronize'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/ 
> mongrel/rails.rb:74:in
> `process'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 159:in
> `process_client'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 158:in
> `each'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 158:in
> `process_client'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 285:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 285:in
> `initialize'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 285:in
> `new'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 285:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 268:in
> `initialize'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 268:in
> `new'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb: 
> 268:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/ 
> configurator.rb:282:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/ 
> configurator.rb:281:in
> `each'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/ 
> configurator.rb:281:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails: 
> 128:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel/ 
> command.rb:212:in
> `run'
>    /usr/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails: 
> 281
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 142:in
> `load_without_new_constant_marking'
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 142:in
> `load'
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 521:in
> `new_constants_in'
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 142:in
> `load'
>    /vendor/rails/railties/lib/commands/servers/mongrel.rb:64
>    /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> `gem_original_require'
>    /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> `require'
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 153:in
> `require'
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 521:in
> `new_constants_in'
>    /vendor/rails/activesupport/lib/active_support/dependencies.rb: 
> 153:in
> `require'
>    /vendor/rails/railties/lib/commands/server.rb:49
>    /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> `gem_original_require'
>    /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
> `require'
>    script/server:3
>
>
>
>
>
> David A. Black wrote:
>> Hi --
>>
>> On Wed, 21 Jan 2009, Mohammad Abed wrote:
>>
>>> That is not necessary, Now I get the same error for the first if  
>>> clause
>>> (when the param is null, and I just type "mysite.com/galleries", the
>>> other two clauses work ok. This what my code looks like
>>>
>>> if params[:user_id].blank?
>>> @galleries = Gallery.find(:all, :conditions => ['visibility_status =
>>> ?', true])
>>
>> I'm not sure how that if clause can give a "called id on nil" error,
>> since it doesn't call id. Can you examine the stacktrace and see if
>> you can pinpoint it?
>>
>> Also, though I know this isn't your question, I'd advise putting all
>> of this logic in the model(s). For example:
>>
>>   class User < AR::Base
>>     has_many :galleries
>>     has_many :visible_galleries,
>>              :class_name => "Gallery",
>>              :conditions => ["visibility_status = ?", true]
>>
>> Then you can do:
>>
>>   @galleries = user.visible_galleries
>>
>> or something like that, in the controller, instead of in-lining the
>> business logic of the model.
>>
>>
>> David
>>
>> --
>> David A. Black / Ruby Power and Light, LLC
>> Ruby/Rails consulting & training: http://www.rubypal.com
>> Coming in 2009: The Well-Grounded Rubyist (http://manning.com/black2)
>>
>> http://www.wishsight.com => Independent, social wishlist management!
>
> -- 
> Posted via http://www.ruby-forum.com/.
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to