Rails新秀在这里。尝试从导航栏中的图像链接到购物车显示页面。代码:
<%= link_to(image_tag("cart.png"),cart_path) %>
给了我这个错误:
No route matches {:action=>"show", :controller=>"carts"} missing required keys: [:id]
我的购物车控制器以此开头:
def show
begin
@cart = Cart.find(params[:id])
你向导的任何见解都会很棒。
答案 0 :(得分:7)
既然你说你是新手,我会详细解释。这句话:
@cart = Cart.find(params[:id])
表示“查看数据库并找到ID为X的购物车”。但是,当你这样做时:
<%= link_to(image_tag("cart.png"),cart_path) %>
您没有提供该ID。这就是为什么它会给你这个错误。
我不知道您的路线是如何定义的,但您可以这样做:
<%= link_to(image_tag("cart.png"),cart_path(cart_id_here) %>
这是一种说法,“id为X的购物车的路径”。
答案 1 :(得分:0)
您需要cart_path(my_cart_object)
。
普通旧ID可能也有用,例如cart_path(5)
,但我可能会弄错。
答案 2 :(得分:0)
由于错误非常具有描述性,因此您需要将id传递给cart_path,因为它是必需的参数。
<%= link_to(image_tag("cart.png"), cart_path(your_cart_id)) %>
答案 3 :(得分:0)
您需要指定购物车。如果您循环浏览购物车,则需要使用“cart_path(cart)”,其中“cart”是当前购物车的占位符。