problem with view, the instance cant be seen

I've a problem in, my view where the object found via find method, cant be seen i get a

You have a nil object when you didn't expect it! The error occurred while evaluating nil.to_sym

Error every time i try to edit the record, the weird thing is that in the debugger the object is created I use restful routing for news

in routes.rb map.resources :news, :singular=>:news_instance

In the view <% form_for @news do |n| %>     <%= render :partial=>'form', :locals=>{:n=>n,:btn_name=>'dodaj'} %> <% end %>

I gues this could be a bug (?) Anyway to get around it?

Can you post the full trace dump?

Can you post the backtrace?

What he said! Great minds think alike!

here it goes:

/usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ activesupport-2.0.2/lib/active_support/core_ext/hash/keys.rb:27:in `symbolize_keys' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ activesupport-2.0.2/lib/active_support/core_ext/hash/keys.rb:26:in `each' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ activesupport-2.0.2/lib/active_support/core_ext/hash/keys.rb:26:in `inject' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ activesupport-2.0.2/lib/active_support/core_ext/hash/keys.rb:26:in `symbolize_keys' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/helpers/url_helper.rb:69:in `url_for' (eval):17:in `news_path' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/polymorphic_routes.rb:27:in `polymorphic_url' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/polymorphic_routes.rb:31:in `polymorphic_path' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/helpers/form_helper.rb:200:in `apply_form_for_options!' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/helpers/form_helper.rb:179:in `form_for' app/views/news/edit.html.erb:4:in `_run_erb_47app47views47news47edit46html46erb' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:637:in `compile_and_render_template' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:365:in `render_template' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_view/base.rb:316:in `render_file' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:1100:in `render_for_file' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:836:in `render' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/layout.rb:262:in `render_with_a_layout' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/benchmarking.rb:51:in `render_with_benchmark' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/1.8/benchmark.rb: 293:in `measure' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/benchmarking.rb:51:in `render_with_benchmark' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:1153:in `default_render' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:1159:in `perform_action' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/filters.rb:697:in `call_filters' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/filters.rb:689:in `perform_action_with_filters' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/1.8/benchmark.rb: 293:in `measure' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/benchmarking.rb:68:in `perform_action_with_benchmark' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/rescue.rb:199:in `perform_action_with_rescue' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/caching.rb:678:in `perform_action_with_caching' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ activerecord-2.0.2/lib/active_record/connection_adapters/abstract/ query_cache.rb:33:in `cache' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ activerecord-2.0.2/lib/active_record/query_cache.rb:8:in `cache' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/caching.rb:677:in `perform_action_with_caching' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:524:in `process' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/filters.rb:685:in `process_with_filters' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/session_management.rb:123:in `process_with_session_management_support' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/base.rb:388:in `process' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/dispatcher.rb:171:in `handle_request' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/dispatcher.rb:115:in `dispatch' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/dispatcher.rb:126:in `dispatch_cgi' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ actionpack-2.0.2/lib/action_controller/dispatcher.rb:9:in `dispatch' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ rails-2.0.2/lib/webrick_server.rb:112:in `handle_dispatch' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/gems/1.8/gems/ rails-2.0.2/lib/webrick_server.rb:78:in `service' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/1.8/webrick/ httpserver.rb:104:in `service' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/1.8/webrick/ httpserver.rb:65:in `run' /usr/local/netbeans-6.1/ruby2/jruby-1.1/lib/ruby/1.8/webrick/server.rb: 173:in `start_thread' :1:in `start'

The backtrace shows that there's a problem in line 4 but you've only shown 3 lines from the template. My guess is that there is something wonky in the partial that you're including (which means there are two lines before the render :partial). If you can show the partial and the edit method we might get somewhere.

<%= render :partial=>'menu' %> <%= error_messages_for :news %> <%unless @news.nil?%>   <% form_for @news do |n| %>     <%= render :partial=>'form', :locals=>{:n=>n,:btn_name=>'add'} %>   <% end %> <%end%>

the partial _menu <div class="submenu">     <ul>         <li class='label'>             news         </li>         <%= '<li>' + link_to('add',new_news_instance_path, {:class=>:add}) + '</li>' if session[:user_level]>1 %>         <li>             <%= link_to 'list',news_path, {:class=>:list,:title=>"list"} %>         </li>     </ul>     <div class="clear"></div> </div>

I am thinking that one of the items in the @news object is nil You check to see if the object is nil, but not each item

<%unless @news.nil?%>   <% form_for @news do |n| %>     #<%= render :partial=>'form', :locals=>{:n=>n,:btn_name=>'add'} %>     <%= (render :partial=>'form', :locals=>{:n=>n,:btn_name=>'add'}) if n %>   <% end %> <%end%>

Just my guess. Lets see what Andy finds.

I did that check after the errors started to pop out and i couldn't find the solution ;/

I am a little confused about how you are calling the partial. I think Rails will interate through all the items in the @news array (if it is an array) in the partial without you having to do so explicitly. I am not at a spot where I can look it up right now.

And yet, you still haven’t shown us the controller code!

Please do.

the controller for the edit action

def edit     @news = News.find(params[:id])   end

def update     @news = News.find(params[:id])

    respond_to do |format|       if @news.update_attributes(params[:news])         format.html { redirect_to(@news) }         format.xml { head :ok }       else         format.html { render :action => "edit" }         format.xml { render :xml => @news.errors, :status => :unprocessable_entity }       end     end   end

I have a feeling that the root of the problem is with the name of your class.

"news".puralize #=> "news"

If I am correct, the code is having trouble with an ambiguous route on line 8 of your partial:

<%= link_to 'list',news_path, {:class=>:list,:title=>"list"} %>

The framework is assuming that 'news_path' is the name of a _singular_ route (rather than the name of the collection/index) and it's looking for an instance of the News class upon which to call to_param so that it can build a path along the lines of news_path(:news_id=>@news). The 'rails-magic' that transforms the instance into a symbolized key for the hash is unhappy.