I have two models with a straightforward has_many / belongs_to
relationship:
class Premise < ActiveRecord::Base
has_many :metered_services, :dependent => :destroy
...
end
class MeteredService < ActiveRecord::Base
belongs_to :premise
...
end
and nested routes to match:
Demo::Application.routes.draw do
devise_for :users
resources :premises do
resources :metered_services
end
...
end
I want to show/edit the metered services on the same page as premise
edit page, so my views/premises/edit.html.erb file has this line:
<% Rails.logger.debug("== #{@premise.address} has
#{@premise.metered_services.count} metered services") %>
<%= render :partial => "metered_services/metered_service", :collection
=> @premise.metered_services %>
and my stubbed views/metered_services/_metered_service.html.erb is just
this:
<% Rails.logger.debug("== _metered_service: metered_service =
#{metered_service.inspect}") %>
So here's what's weird: With a newly created premise -- before I've
added any metered services -- the _metered_service.html.erb partial gets
called with a metered service object whose ID is nil and whose
premise_id field is filled in with the owning premise. But there should
be ZERO metered services, not one. The console will show something
like:
== 1800 Pennsylvania Avenue has 0 metered services
MeteredService Load (0.2ms) SELECT "metered_services".* FROM
"metered_services" WHERE ("metered_services".premise_id = 48)
== metered_service = #<MeteredService id: nil, premise_id: 48, ... >
Is this a special "feature" of render ... :collection? I can always
filter out metered_services with nil ids in the partial, but that seems
really odd. Am I doing something wrong?
- ff
--
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.