添加到购物车功能 - 无方法错误(未定义方法)

时间:2016-09-22 18:49:08

标签: ruby-on-rails

大家好,我正在尝试添加购物车功能"。我一直收到"购物车未定义的方法或变量"错误,我似乎无法弄清楚我哪里出错了。

这是我的cart.rb模型

if isWordGuessed(secretWord, lettersGuessed):

这是我的carts_controller.rb

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

application_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

按钮的routes.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

以及要添加到购物车的按钮的代码

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

每当我尝试&#34;候选名单导师&#34;按钮,我在CartsController中收到NoMethodError#add_to_cart,未定义的方法`tutors&#39; for Cart(id:integer):Class

并且突出显示的错误位于cart.rb模型文件和

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

非常感谢有关此错误的任何帮助。感谢您的时间和建议!

1 个答案:

答案 0 :(得分:0)

Cart.tutors << tutor购物车是一个班级。要将tutors添加到CartCart必须是对象。在您的情况下,current_cart是一个对象,但Cart是类。所以用cart替换cart.rb中的Cart,如下所示

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