我想将我的路径从root/carts/56更改为root/cart。
我应用了这个问题Rails路由到用户名而不是id的逻辑,它将用户的id更改为路径中的用户名。这是因为用户名可以设置为unique。
我希望一个/cart引导(显然)到一个购物车,访问者(没有用户)正在使用并摆脱: 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就是它给我的东西。
对不起-给我URL中的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 %>如果他们还没有创建一个购物车,他们会在访问页面时创建一个购物车。
实际上,我遵循了手推车这里的教程
发布于 2014-06-18 14:16:35
在您的路由文件中使用
resource :cart, :only => :show # note 'resource' not 'resources'这将给您一个可以调用的cart_path。它将击中carts_controller中的show方法。如果您需要/root/有几种方法来添加它。
将其置于routes.rb文件中声明的用户路径之上。
您可能需要进行一些验证,以确保用户不会选择保留的名称。
https://stackoverflow.com/questions/24287864
复制相似问题