缺少所需的密钥

时间:2014-08-11 20:10:25

标签: ruby-on-rails ruby

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]) 

你向导的任何见解都会很棒。

4 个答案:

答案 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”是当前购物车的占位符。