복붙노트

[RUBY-ON-RAILS] 자원과 자원 방법의 차이

RUBY-ON-RAILS

자원과 자원 방법의 차이

자원과 자원 방법 사이의 논리적 차이점은 무엇입니까

다음은 몇 가지 예입니다 :

resource :orders, :only => [:index, :create, :show]

> rake routes
 orders POST       /orders(.:format)            orders#create
        GET        /orders(.:format)            orders#show


resources :orders, :only => [:index, :create, :show]

> rake routes
 orders GET        /orders(.:format)            orders#index
        POST       /orders(.:format)            orders#create
  order GET        /orders/:id(.:format)        orders#show


resource :orders

> rake routes
     orders POST       /orders(.:format)            orders#create
 new_orders GET        /orders/new(.:format)        orders#new
edit_orders GET        /orders/edit(.:format)       orders#edit
            GET        /orders(.:format)            orders#show
            PUT        /orders(.:format)            orders#update
            DELETE     /orders(.:format)            orders#destroy


resources :orders

> rake routes
     orders GET        /orders(.:format)            orders#index
            POST       /orders(.:format)            orders#create
  new_order GET        /orders/new(.:format)        orders#new
 edit_order GET        /orders/:id/edit(.:format)   orders#edit
      order GET        /orders/:id(.:format)        orders#show
            PUT        /orders/:id(.:format)        orders#update
            DELETE     /orders/:id(.:format)        orders#destroy

그것은 인덱스 경로를 생성하지 않는 방법 자원과 같은, 어떤 경우에는 헬퍼 (NEW_ORDER 및 new_orders) 다릅니다. 왜?

해결법

  1. ==============================

    1.사실 당신이 맞다 인덱스 작업을 명시 적으로,이 방법을 요청하지 않는 한, 자원, 인덱스 조치를 작성해서는 안됩니다 :

    사실 당신이 맞다 인덱스 작업을 명시 적으로,이 방법을 요청하지 않는 한, 자원, 인덱스 조치를 작성해서는 안됩니다 :

    resource :orders, :only => [:index, :create, :show]
    

    도우미도 다르지만해야하지 그, 당신의 예에서와 같이 많은 규칙은 자원의 방법으로 단수 형태, 그리고 자원 복수를 사용하는 것입니다 때문에

    resources :orders
    => rake routes
    
         orders GET        /orders(.:format)            orders#index
                POST       /orders(.:format)            orders#create
      new_order GET        /orders/new(.:format)        orders#new
     edit_order GET        /orders/:id/edit(.:format)   orders#edit
          order GET        /orders/:id(.:format)        orders#show
                PUT        /orders/:id(.:format)        orders#update
                DELETE     /orders/:id(.:format)        orders#destroy
    
    resource :order
    => rake routes
          order POST       /order(.:format)            orders#create
      new_order GET        /order/new(.:format)        orders#new
     edit_order GET        /order/:id/edit(.:format)   orders#edit
                GET        /order/:id(.:format)        orders#show
                PUT        /order/:id(.:format)        orders#update
                DELETE     /order/:id(.:format)        orders#destroy
    

    그리고 논리적 차이는 예를 들어 관리자 또는 무엇 이건 앱에서 리소스에 대한 복수를 가질 수 없습니다 논리적으로 당신을 선언하는 것입니다

  2. ==============================

    2.높은 수준에서, 자원의 의도는 단지 이러한 리소스 중 하나가 지금까지 존재하게 선언하는 것입니다. 예를 들면 :

    높은 수준에서, 자원의 의도는 단지 이러한 리소스 중 하나가 지금까지 존재하게 선언하는 것입니다. 예를 들면 :

    resource :profile, :only => [:edit, :update]
    

    사용자로, 나는 단지 내 자신의 프로필을 업데이트 할 수 있어야한다. 그래서 / 1 / 프로필 / 편집 / 사용자와 같은 URL 방식에 대한 필요가 없습니다, 편집 다른 사용자의 프로필을 할 수 없을 것이다. 대신에, 나는 / 프로필 / 편집을 사용하고, (없음이 없기 때문에) 컨트롤러가 URL에 전달 된 ID가 아닌 현재 사용자의 ID를 사용하는 알고있다.

    당신이 자원과 색인 작업을하지 않는 이유의 : 하나의 자원이 그렇게 그들을 "목록"에서 아무 의미가 없다,있다.

  3. from https://stackoverflow.com/questions/9194767/difference-between-resource-and-resources-methods by cc-by-sa and MIT license