2013-06-07 3 views
0

fondamentalement ce que j'essaie de faire est d'utiliser une clé étrangère. Par exemple. 144 qui retournera un objet. Je continue à recevoir une erreur disant que le numéro d'enregistrement ne peut pas être trouvé.ruby ​​sur rails étrangères clés

Dans la vue Afficher la vue.

(je l'ai testé et @ order.cart_id est valide et ne retourne un numéro. Par exemple, 144

<b>Order items:</b> 
<%= @cart.get_order_cart(@order.cart_id) %> 

Dans le modèle de panier, méthode get_order_cart

def get_order_cart(cart_id) 
    cart = Cart.find(cart_id) 
    cart.line_items.each do |item| 
    item.product.title 
    end 
end 

Comme je le dis bien, ce ne fonctionne pas. Quel est le problème s'il vous plaît? Merci

+0

peu confus, est @cart le même panier que Cart.find (@ order.cart_id)? – AJcodez

+0

Qu'attendez-vous qu'il fasse exactement? –

+0

Votre commande peut avoir un identifiant de panier, mais est-ce que la table charrettes a un enregistrement avec cet identifiant? Cela semble ne pas être le cas. –

Répondre

0

Pourquoi ne pas utiliser des associations ActiveRecord?

class Order < ActiveRecord::Base 
    belongs_to :cart 
end 

class Cart < ActiveRecord::Base 
    has_many :orders 
end 

Maintenant, vous pouvez obtenir votre panier simplement par

@cart = @order.cart 
+0

Merci, les associations sont là. J'ai essayé ce code mais il ne semble pas fonctionner même s'il semble correct <% [at] order.cart.line_items.each do | item | %> <% = item.product.title%> <% end%> Il échoue lorsqu'il indique qu'il existe une méthode line_items non définie. Cela fonctionne quand je sors l'ordre [at] et le remplace par [at] cart mais j'ai besoin de l'association là-bas. Merci – baihu

+0

Une méthode non définie line_items sur quel objet? Est-ce sur NilClass? Cela peut être utile si vous postez également le code pour vos modèles. –

+0

line_items n'est pas une méthode mais un attribut. Dans le panier.rb has_many: line_items Je vais poster les modèles maintenant – baihu