2013-03-22 2 views
0

Я получаю такую ​​ошибку, ранее ее правильно портили, но некоторые, как это ошибка.ошибка в ruby ​​on rails controller class

 undefined method `save' for 2:Fixnum 

И это мой код в line_item_controller.rb/создать

def create 
    @cart = current_cart 
    product = Product.find(params[:product_id]) 
    @line_item = @cart.add_product(product.id) 

    respond_to do |format| 
    if @line_item.save 
     format.html { redirect_to store_url} 
     format.js { @current_item = @line_item } 
     format.json { render :json => @line_item, :status => :created, :location => @line_item } 
    else 
     format.html { render :action => "new" } 
     format.json { render :json => @line_item.errors, :status => :unprocessable_entity } 
    end 
    end 
end 

, пожалуйста, помогите!

+0

Что возвращает метод 'add_product (id)'? Вы вызываете его позже, вероятно, это сообщение об ошибке. – GSP

+0

не могли бы вы показать реализацию add_product, кажется, что он возвращает некоторую константу –

+0

, вот реализация add_product. Защиту add_product (product_id) current_item = line_items.find_by_product_id (product_id) если current_item current_item.quantity + = 1 еще current_item = line_items.build (: product_id => product_id) конец конец – user2164254

ответ

0

Похоже, что ваш метод add_product возвращает целое число, а не продукт, который вы ожидаете.

Это значит, что @line_item.save оценивает <some number>.save, поэтому вы получаете сообщение об ошибке.

Проверьте add_product и убедитесь, что он возвращает объект вместо идентификатора.

+0

thanx Richard, я на самом деле забыл написать возвращаемое значение в конце, ваше предложение сработало. – user2164254

0

@cart.add_product похоже возвращает число (Fixnum) вместо объекта модели, как вы ожидаете. Если вы не знаете, как это исправить, покажите нам реализацию add_product.

Смежные вопросы