我想将我的路径从root / carts / 56更改为root / cart。
我应用了此问题Rails route to username instead of id中的逻辑,该问题将用户的ID更改为路径中的用户名。这是有效的,因为用户名可以设置为唯一。
我想要一个/ cart引导(显然)到访问者(没有用户)正在使用的一个购物车并摆脱 :购物车/:ID。我不要使用用户模型,否则我只会做@ user.cart(:user / cart)
所以我(可以理解)得到这个错误
Invalid route name, already in use: 'cart'
因为这行
match '/:carts/:id' => 'carts#show', :as =>'cart', :via => :get
相关路线:
carts GET /carts(.:format) carts#index
POST /carts(.:format) carts#create
new_cart GET /carts/new(.:format) carts#new
edit_cart GET /carts/:id/edit(.:format) carts#edit
cart GET /carts/:id(.:format) carts#show
PATCH /carts/:id(.:format) carts#update
PUT /carts/:id(.:format) carts#update
DELETE /carts/:id(.:format) carts#destroy
更新:
使用resource :cart, :only => :show # note 'resource' not 'resources'
我得到了改进,但是我可以以某种方式从路径中删除id吗?
http://localhost:3000/cart?id=52
是它给我的。
抱歉 - 在网址中为我提供ID的行是
<li><%= link_to "Cart", cart_path(id: session[:cart_id]) %></li>
我真的需要一个独特的资源吗?我正在像这样的会议中创建购物车
<% if session[:cart_id] == nil %>
<li><%= link_to "Cart", new_cart_path %></li>
<% else %>
如果他们还没有创建购物车,他们会在访问该页面时创建一个购物车。
我实际上遵循了购物车here
的教程答案 0 :(得分:1)
在路线档案中使用
resource :cart, :only => :show # note 'resource' not 'resources'
这将为您提供一个可以调用的cart_path。它将在carts_controller中点击show方法。如果你需要/ root / theres几种方法来添加它。
将其放在routes.rb文件中声明的用户路径上方。
您可能需要进行一些验证,以确保用户不会选择保留的名称。