调用方法 and/or 动作控制器时出错
error calling metod and/or action controller
我有这个问题:
我应该减少 line_item 的属性 "quantity"。
所以我创建了一个 button_to 来做到这一点。
问题是,即使我在 line_item 的控制器中创建了新操作 "less" 并将其添加到路由中,我的功能也不起作用。
你能告诉我问题是什么吗?
Routes.rb
resources :line_items do
post :less, on: :collection
end
Line_item 控制器
在此文件中,我包含了 set_cart 方法(有效),因此我可以使用 @cart vaiable
我写了 before_action :set_cart,只有:[:create,:less]
def less
puts "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
#Rails sa di dover prendere l' ID da product per eseguire il find :D
product = Product.find(params[:product_id])
#aggiungiamo un prodotto in piu'
#ritorna un current_item
@line_item = @cart.less_items(product.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url}
#a respond_to passiamo il blocco con la @current_item
#si passa un blocco perchè è definito cosi il metodo
format.js { @current_item = @line_item}
format.json { render :show, status: :created, location: @line_item }
else
format.html { render :new }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
结束
购物车型号:
def less_items(product_id)
current_item = line_items.find_by(product_id: product_id)
if current_item && current_item > 1
current_item.quantity -= 1
else
current_item = line_items.build(product_id: product_id)
end
current_item
end
控制台对我说:
新问题:
感谢 Tomáš Dundáček 我知道我必须编辑 cancan 能力文件以允许 less 方法通过。现在我还有问题。图片在这里:
没想到,但我有这些:
include CurrentCart
before_action :set_cart, only: [:create,:less]
before_action :set_line_item, only: [:show, :edit, :update, :destroy]
#cancan
load_and_authorize_resource
所以作为新问题的答案:
这一行:
if current_item && current_item > 1
需要改为
if current_item && current_item.quantity > 1
我有这个问题: 我应该减少 line_item 的属性 "quantity"。 所以我创建了一个 button_to 来做到这一点。 问题是,即使我在 line_item 的控制器中创建了新操作 "less" 并将其添加到路由中,我的功能也不起作用。 你能告诉我问题是什么吗?
Routes.rb
resources :line_items do
post :less, on: :collection
end
Line_item 控制器 在此文件中,我包含了 set_cart 方法(有效),因此我可以使用 @cart vaiable 我写了 before_action :set_cart,只有:[:create,:less]
def less
puts "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
#Rails sa di dover prendere l' ID da product per eseguire il find :D
product = Product.find(params[:product_id])
#aggiungiamo un prodotto in piu'
#ritorna un current_item
@line_item = @cart.less_items(product.id)
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url}
#a respond_to passiamo il blocco con la @current_item
#si passa un blocco perchè è definito cosi il metodo
format.js { @current_item = @line_item}
format.json { render :show, status: :created, location: @line_item }
else
format.html { render :new }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
结束
购物车型号:
def less_items(product_id)
current_item = line_items.find_by(product_id: product_id)
if current_item && current_item > 1
current_item.quantity -= 1
else
current_item = line_items.build(product_id: product_id)
end
current_item
end
控制台对我说:
新问题:
感谢 Tomáš Dundáček 我知道我必须编辑 cancan 能力文件以允许 less 方法通过。现在我还有问题。图片在这里:
没想到,但我有这些:
include CurrentCart
before_action :set_cart, only: [:create,:less]
before_action :set_line_item, only: [:show, :edit, :update, :destroy]
#cancan
load_and_authorize_resource
所以作为新问题的答案:
这一行:
if current_item && current_item > 1
需要改为
if current_item && current_item.quantity > 1