2016-09-22 1 views
0

Hallo Leute, ich versuche eine "Add-to-Cart-Funktion". Ich erhalte weiterhin den Fehler "Einkaufswagen undefinierte Methode oder Variable" und ich kann nicht herausfinden, wo ich falsch liege.In den Warenkorb Function - No Method Error (undefinierte Methode)

Hier ist mein cart.rb Modell

class Cart < ActiveRecord::Base 
    has_many :tutors 

    def add_tutor(tutor_id) 
    tutor = Tutor.where('tutor_id = ?', tutor_id) 
    if tutor 
     Cart.tutors << tutor 
    end 
    save 
    end 
end 

Hier ist meine carts_controller.rb

class CartsController < ApplicationController 

    def show 
    @cart = current_cart 
    end 

    def add_to_cart 
    current_cart.add_tutor(params[:tutor_id]) 
    redirect_to tutors_path 
    end 

end 

definierten Methoden in application_controller.rb

def current_cart 
    if session[:cart_id] 
     @current_cart ||= Cart.find(session[:cart_id]) 
    end 
    if session[:cart_id].nil? 
     @current_cart = Cart.create! 
     session[:cart_id] = @current_cart.id 
    end 
    @current_cart 
    end 

Code in routes.rb für die Schaltfläche

post '/add_to_cart/:tutor_id' => 'carts#add_to_cart', :as => 'add_to_cart' 

und der Code für die Schaltfläche den Warenkorb

<%= button_to "Shortlist Tutor", add_to_cart_path(:tutor_id => :tutor_id), :method => :post %> 

hinzufügen Jedes Mal, wenn ich die "Shortlist Tutor" Taste versuchen, erhalte ich eine NoMethodError in CartsController # add_to_cart, nicht definierte Methode `Tutoren für Wagen (id: integer): Klasse

und der markierte Fehler ist auf der cart.rb Modelldatei und die Linie

Cart.tutors << tutor 

Jede Hilfe zu diesem Fehler wird sehr geschätzt wird. Danke für deine Zeit und deinen Rat!

Antwort

0

In Cart.tutors << tutor Wagen ist eine Klasse. Um tutors zu Cart hinzuzufügen, muss Cart ein Objekt sein. In Ihrem Fall ist current_cart ein Objekt, aber Cart ist Klasse. so ersetzen Wagen in cart.rb mit Selbst wie unten gezeigt

class Cart < ActiveRecord::Base 
    has_many :tutors 

    def add_tutor(tutor_id) 
    tutor = Tutor.where('tutor_id = ?', tutor_id) 
    if tutor 
     self.tutors << tutor 
    end 
    save 
    end 
end 
+0

Wurde der Fehler gelöst ?? –

+0

Vielen Dank für diese Lösung! Ja, es scheint, als hätte es mein Problem gelöst, weil ich jetzt nicht mehr den undefinierten Methodenfehler bekomme! vielen Dank noch mal! Der Fehler ist nun SQLite3 :: SQLException: keine solche Spalte: tutor_id: SELECT "Tutoren". * FROM "Tutoren" WHERE (tutor_id = '2') – angkiki

+0

Es ist, weil Sie keine Spalte namens tutor_id in Tutor haben. Ersetzen Sie also "tutor = Tutor.where ('tutor_id =?', Tutor_id)" von "tutorial = Tutor.find (tutor_id)". Wenn es heißt, dass der Datensatz nicht gefunden wurde, bedeutet das, dass kein Tutor-Datensatz mit der ID als Tutor-ID vorhanden ist. –

Verwandte Themen