I have a controller and model for both “products” and “baskets”. I’ve
set up the belongs_to and has_many. When I’m in a third controller
“shop” I get an error when I try to get the “products” data via
“baskets”. So asking for item.product.price gives an error.
Can I have this kind of relation when I’m in a third controller, that
doesn’t have a model itself?
Pål Bergström wrote:
I have a controller and model for both “products” and “baskets”. I’ve
set up the belongs_to and has_many. When I’m in a third controller
“shop” I get an error when I try to get the “products” data via
“baskets”. So asking for item.product.price gives an error.
Can I have this kind of relation when I’m in a third controller, that
doesn’t have a model itself?
Controllers have nothing to do with models, although best practices
suggests having a controller per model.
A controller has visibility into all your models if it needs to…
Please show us your relations that you wrote in your models and the
controller code used to access them and then we may be better prepared
to assist you
ilan
Ilan B. wrote:
Pål Bergström wrote:
Controllers have nothing to do with models, although best practices
suggests having a controller per model.
A controller has visibility into all your models if it needs to…
Please show us your relations that you wrote in your models and the
controller code used to access them and then we may be better prepared
to assist you
ilan
class Basket < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
has_many :product_photos
belongs_to :basket
def self.created_at
created_at.strftime("%Y-%m-%d")
end
end
class ShopController < ApplicationController
def basket
@mybasket =
Basket.find_all_by_session_id(session[:basket_has_items])
end
end
<% for item in @mybasket %>
<%= item.product.name %>
<% end %>
I get @mybasket. But I can’t access product info. It says “undefined
method `product’”
Pål Bergström wrote:
I get @mybasket. But I can’t access product info. It says “undefined
method `product’”
that’s because you defined baskets as having MANY products… therefore
it’s:
item.products.each do |product|
more code to deal with each product
end
hth
ilan
Ilan B. wrote:
Pål Bergström wrote:
I have a controller and model for both “products” and “baskets”. I’ve
set up the belongs_to and has_many. When I’m in a third controller
“shop” I get an error when I try to get the “products” data via
“baskets”. So asking for item.product.price gives an error.
Can I have this kind of relation when I’m in a third controller, that
doesn’t have a model itself?
Controllers have nothing to do with models, although best practices
suggests having a controller per model.
“Best practices” suggest no such thing that I’m aware of. In a typical
app, most models will have associated controllers. Some controllers
will not have associated models, and a few models may not have
associated controllers. There’s no reason to slavishly pair models and
controllers if the nature of the app doesn’t call for it.
Or am I misunderstanding what you meant?
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
Marnen Laibow-Koser wrote:
“Best practices” suggest no such thing that I’m aware of. In a typical
app, most models will have associated controllers. Some controllers
will not have associated models, and a few models may not have
associated controllers. There’s no reason to slavishly pair models and
controllers if the nature of the app doesn’t call for it.
Or am I misunderstanding what you meant?
I meant exactly what you stated… 