2014-06-18 4 views
0

root/cart/56에서 root/cart로 내 경로를 변경하고 싶습니다."/ : id/model"에서 "/ model"로 경로 변경

Rails route to username instead of id의 논리를 적용하여 사용자의 ID를 경로의 사용자 이름으로 변경합니다. 이 작업은 사용자 이름을 고유로 설정할 수 있기 때문에 가능합니다.

나는/cart가 방문하는 사람 (사용자가 없음)이 단 하나의 카트로 가도록 유도하고 : cart/: id를 제거하려고합니다. 나는, NOT 사용자 모델을 사용 DO 그렇지 않으면 난 그냥 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 

UPDATE :

resource :cart, :only => :show # note 'resource' not 'resources' 으로 개선되었지만, 어떻게 든 이드에서 경로를 제거 할 수 있습니까?

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 %> 

아직 카트를 만들지 않았 으면 페이지를 방문 할 때 만드는 카트입니다.

는 사실이 당신에게 당신이 호출 할 수있는 cart_path을 줄 것이다 사용

resource :cart, :only => :show # note 'resource' not 'resources' 

파일 카트 당신의 경로에서 here

+0

'레이크 루트'출력을 게시하십시오. – Pavan

+1

당신은 단 하나의 자원을 사용해야하는 것처럼 들립니다. 'resources : cart'가 아닌'resource : cart' –

+0

* ID 매개 변수가있는 URL은 무엇입니까? 장바구니 링크를 생성하는 코드는 무엇입니까? – colinm

답변

1

에 대한 튜토리얼을 따라 갔다. 그것은 carts_controller에서 show 메소드를 실행합니다./root/theres를 추가하려면 몇 가지 방법이 필요합니다.

routes.rb 파일에 선언 된 사용자 경로 위에 입력하십시오.

사용자가 예약 된 이름을 선택하지 않도록하려면 일부 유효성 검사가 필요할 수 있습니다.

+0

진행 상황, 업데이트 된 질문 - 사용자 모델이 없습니다. – Peege151

+0

사용자 모델이 없으므로 'http : localhost : 3000/cart'와 같은 것을 얻을 수 없습니까? – Peege151

+0

사용자 모델이없는 경우 사용자에 관한 모든 것을 무시하면됩니다. – colinm