I'm having a problem with Rails 3.2.1, a nested resource keeps complaining about an uninitialized constant, I can't figure out why because to me it seems I've done the same as with a different model where this did work. At some point I thought I might be using a reserved word somewhere, but changing the model names didn't help...
Error:
uninitialized constant Brand::Series
Extracted source (around line #11):
8: </article>
9:
10:
11: <% @series.each do |serie| %>
12: <article class='serie_block'>
13: <%= serie.name %>
14: </article>
brand.rb
class Brand < ActiveRecord::Base
has_many :series, :order => "name, id ASC", :dependent => :destroy
end
serie.rb
class Serie < ActiveRecord::Base
belongs_to :brand
end
brands_controller.rb
def show
@brand = Brand.find(params[:id])
@series = @brand.series
end
brands/show.html.erb
<% @series.each do |serie| %>
<article class='serie_block'>
<%= serie.name %>
</article>
<% end %>
I get the same "uninitialized constant Brand::Series" error when I try to create a new serie, but then it refers to "app/controllers/series_controller.rb:21:in `new'", which is this line "@serie = @brand.series.build".
series_controller.rb
# GET /Series/new
# GET /Series/new.json
def new
@brand = Brand.find(params[:brand_id])
@serie = @brand.series.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @serie }
end
end
Now the strange thing is that the relation seems to work, Rails is not complaining about "brands" not having a "series" method. But the actual creation of the series object seems to fail :s