0
所以下面是我测试了我的控制器防止重复添加到购物车
def add_to_cart
@cart = current_cart
if @cart.tutors.where(params[:tutor_id]).empty?
@cart.add_tutor(params[:tutor_id])
flash[:success] = 'You have successfully added the tutor to your shortlist!'
redirect_to show_path
else
flash[:danger] = 'You have already shortlisted the tutor!'
redirect_to show_path
end
end
我不知道这是否是去测试正确的方式,如果tutor_id
出现在车中的作用。我实际上尝试过在轨道控制台中测试各种检查儿童属性的方法。我抵达Parent.Child.where(:id => X)
作为一种方式来检查是否有任何孩子的id = X.
这是什么显示在我的服务器(或开发日志)时调用方法。
Started POST "/add_to_cart/11" for 116.87.14.150 at 2016-10-16 07:32:09 +0000
Cannot render console from 116.87.14.150! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by CartsController#add_to_cart as HTML
Parameters: {"authenticity_token"=>"XzHaIJMzIz9I84W5tmLuj+28SBvVP9pc1JdZOyQaYEr286JNIw4J8tKtSON7eIWsdf0Lc6ogCdT2LrdtVVxGoA==", "tutor_id"=>"11"}
cart_id = 17
Cart Load (0.2ms) SELECT "carts".* FROM "carts" WHERE "carts"."id" = ? LIMIT 1 [["id", 17]]
(0.2ms) SELECT COUNT(*) FROM "tutors" INNER JOIN "cart_tutors" ON "tutors"."id" = "cart_tutors"."tutor_id" WHERE "cart_tutors"."cart_id" = ? AND (11) [["cart_id", 17]]
反正它不断处理else
部,这意味着其不工作等我的意思它是,这可能意味着其不检查的ID等我打算为它做。我使用正确的方法吗?如果不是,我应该怎么做呢?
你好,它完美的作品。谢谢。我可以澄清理解的目的,我知道在rails4中做'id:'和':id =>'是一样的,所以这意味着我应该完成'.where(:id => params [:tutor_id]) '就像在测试我的轨道控制台中的查询时所做的一样? – angkiki
':id =>' - 这是散列的旧语法。从ruby 1.9推荐使用'id:' - 但总的来说它是一样的。 – kunashir