2011-10-06 2 views
0

내가 만들 수있는 방법이레일에 설정된 경로의 템플릿을 만드는 방법 3

get "brands/create" 
get "brands/update" 
get "brands/new" 
get "brands/edit" 
get "brands/destroy" 

처럼, 내가 CRUD에 대한 아약스를 사용하고 모든 모델에서 나는 모든 작업을 설정해야하지만 유형 "GET" 복제를 피하기 위해서 내가 사용하고있는 마네 집합입니다.

resources :brands (예 : 올바른 형식으로 아약스 요청을 보낼 수 있습니까?), 표준 리디렉션이 작동하지만 두 번째 점은 html로 변경하지 않으려 고합니다. 모든 행동에서, 나는 그것을 전혀 사용하지 않기 때문에. 이제는 렌더링하지 않고 액션이 자동으로 실행됩니다.

+0

왜 GET을 사용해야합니까? – Bohdan

+0

차이점은 무엇입니까? 어쨌든 나는 자원을 사용할 수 없다. – zishe

+0

'GET 만 사용하고'GET/POST '를 사용하는 것의 차이점은 낙하산없이 하나를 가지고 스카이 다이빙을하는 것과 거의 같습니다 : – Bohdan

답변

2

우선, 정말로, 정말로, 응용 프로그램을 매우 취약하게 만들므로 GET 만해서는 안됩니다. 나는 실제 질문에 대한 해답을 처음부터하지 말아야하는 이유에 대해 한 가지 더 예를들 수있다.

경로를 조금 더 건조하게 만들려면 별도의 모듈에서 맞춤 경로 도우미를 만들어 사용할 수 있습니다. 당신의 RAILS_ROOT/lib 폴더에 route_helpers.rb을 만들어 시작 후이 같은 보이게 :

class ActionDispatch::Routing::Mapper 

    def my_resources(*args) 
    args.each do |res| 
     get "#{res}/create" 
     get "#{res}/update" 
     get "#{res}/new" 
     get "#{res}/edit" 
     get "#{res}/destroy" 
    end 
    end 
end 

을 그리고 당신은이처럼 routes.rb에서 경로를 사용할 수 있습니다

require 'route_helpers' 

AppName::Application.routes.draw do 

    my_resources :brands 

end 

하지 않으며, 내 예와 같이 route_helpers를 요구하는 것을 잊어 버리십시오.

이제는 안됩니다. 내보기에서 좋아해요. 나는 자신을 반복하지 않는 것이 좋다는 데 동의하지만 표준 자원이 경로를 생성하는 이유가 있습니다. GET은 읽기 전용이며, 레코드를 작성하고 업데이트하지 않으며 확실하게 파괴하지 않습니다.

링크를 만들어 항목을 파괴하면 검색 엔진이 색인을 생성하기 위해 사이트 크롤링을 시작하면 get 명령 및 BAM ... 링크가 링크를 따라 이동하고 레코드가 삭제됩니다. 사이트에 로그인하여이를 방지하려면 사용자가 로그인 한 다음 다른 탭에서 img 태그가있는 페이지를 방문하여 yourdomain.com/brands에 src를 설정하면 발생할 수 있습니다/destroy 그런 다음 로그인 한 세션이있는 사용자 브라우저가 이미지를 가져 와서 다운로드하려고 시도하고 BAM ..... 레코드가 다시 삭제됩니다.

이것은 단지 몇 가지 예이지만, GET 프로토콜을 이런 식으로 사용하지 마십시오.

+0

감사합니다. 이제 GET만을 사용하는 이유를 알았습니다. – zishe

관련 문제