Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails3使用ajax在模型中设置变量_Ruby On Rails_Ajax_Jquery_Variables_Model - Fatal编程技术网

Ruby on rails rails3使用ajax在模型中设置变量

Ruby on rails rails3使用ajax在模型中设置变量,ruby-on-rails,ajax,jquery,variables,model,Ruby On Rails,Ajax,Jquery,Variables,Model,我是rails新手,无法使用ajax在模式中设置变量!我的方法是;我首先将它从外部javascript(jquery对话框)传递给我的控制器,然后作为参数传递给我的模型方法。请批评 我的javascript(jquery对话框按钮中的ajax): 我的控制器-它通过ajax POST接收:qty_selected值,并使用ctlQty: # POST /line_items # POST /line_items.json def create @cart = current_cart pro

我是rails新手,无法使用ajax在模式中设置变量!我的方法是;我首先将它从外部javascript(jquery对话框)传递给我的控制器,然后作为参数传递给我的模型方法。请批评

我的javascript(jquery对话框按钮中的ajax):

我的控制器-它通过ajax POST接收:qty_selected值,并使用ctlQty:

# POST /line_items
# POST /line_items.json
def create
 @cart = current_cart
 product = Product.find(params[:product_id])
 ctlQty = :qty_selected
 @line_item = @cart.add_product(product.id, ctlQty)

 respond_to do |format|
 if @line_item.save
  format.html { redirect_to(store_index_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
我的模型接收该值并设置局部变量当前数量:

def add_product(product_id, qty_selected)

current_qty = qty_selected
if current_qty
    current_qty = qty_selected
else
    current_qty = 1
end

current_item = line_items.find_by_product_id(product_id)
if current_item
    current_item.quantity += current_qty
else
    current_item = line_items.build(:product_id => product_id)
end
current_item
end
测试后,我收到:

"TypeError (:qty_selected can't be coerced into Fixnum)"
app/models/cart.rb:17in '+'
app/models/cart.rb:17in 'add_product'
app/controllers/line_items_controller.rb:48in 'create'

错误消息表示您正在尝试使用符号和数字。实际上,在控制器中,它应该是:

ctlQty = params[:qty_selected].to_i   # instead of ctlQty = :qty_selected
另外,在
add_product
中,前6行看起来很复杂,可以简单地编写

current_qty = qty_selected || 1

令人惊叹的。将“+=current_quantity.添加到_i”后,错误消失了,代码工作正常!
current_qty = qty_selected || 1