REST 방식으로이 작업을 수행하려고하므로 먼저 HTTP 동사 중 하나를 사용하여 쿼리 할 수있는 리소스를 찾으십시오.
나는 여기에서 확인해야 할 "것이"상태 인 foo이라고 말하고 싶습니다. 의 URL로 번역 : 콘크리트의 foo
/foos/:id/status
상태는 자원이다 - 그 준수 REST 수하려고 할 때 우리가 가장 먼저해야 할 일이다. 우리가 어떤 foo를 발표 할 때, 그것은 우리가 그 상태를 변경 (업데이트)한다는 것을 의미합니다, 맞습니까? 그래서 우리가해야 할 일은 "foo의 업데이트 상태"요청을 처리 할 경로와 메소드를 만드는 것입니다.
map.connect "/foos/:id/status", :controller => "foos", :action => "change_status", :conditions => { :methods => :put }
을하고, FOOS 컨트롤러 파일로이 같은 추가 :
이 작업을 수행하려면, 당신의 routes.rb 파일에이 추가가 될 겁니다 이러한 방식으로
# simplified
def change_status
status_name = params[:status_name]
foo = Foo.find(params[:id])
foo.publish! if status_name == "published"
end
꽤 괜찮은 RESTful 디자인으로
이 솔루션에는 하나의 문제가 있습니다. 이는 REST의 주요 지침 중 하나에 위배됩니다. URL에 동사가 있습니다. –
그는 실제로 그가 엄격하게 REST-ful에 머무르는 것에 관심이 있다고 말하지 않았습니다. 그가 있다면, 당신의 해결책은 훨씬 낫습니다. –
그건 중요한 지적입니다. –