2013-02-19 5 views
1

내 앱에서 시간 링크를 클릭 할 때 studenttraining time에 속하는지 여부를 전환합니다.get, post, put을 사용해야합니까? 중요합니까?

# controller 
def time 
    @student = Student.find(params[:student_id]) 
    @time = TrainingTime.find(params[:training_time_id]) 
    @student.toggle_time(@time) 
    respond_to do |format| 
    format.html { redirect_to @student } 
    format.js 
    end 
end 

# routes 
resources :students do 
    match "time/:training_time_id", to: "students#time", as: :toggle_time 
end 

# view 
<%= link_to t.time_format, student_toggle_time_path(@student, t), remote: true %> 

현재 일치를 사용하여 작동하지만 현재이를 설정하는 올바른 방법은 무엇이며 그 이유는 무엇입니까?

입력 해 주셔서 감사합니다.

+1

http 동사의 일반적인 사용 : 위대한 대답은 여기에 http://stackoverflow.com/questions/630453/put-vs-post-in-rest –

답변

8

의미에 관한 모든 것입니다. GET을 사용하여 리소스를 업데이트하려면 , PUT (또는 PATCH, 이는 논쟁의 대상 임) 리소스를 업데이트하려면 DELETE을 삭제하십시오.

POSTPUT도 논란의 여지가 있습니다. 하지만 웹 서버는 대개 GETPOST만을 처리하므로 (매개 변수를 통해 에뮬레이트되는 다른 동사의 동작) 나는 너무 많이 신경 쓰지 않고 위의 글을 계속 사용합니다.

리소스를 생성하지 않는 것 같습니다. 따라서 의미 상으로는 PUT이 당신이 원하는 것입니다.

match의 경우 레일 3.X에서 catch all => 모든 동사가 경로에서 일치합니다. match 'something', via: [:get, :post]을 사용할 수 있습니다. Rails 4에서는 기본적으로 아무 것도하지 않으므로 처리되는 동사에 대해 명시해야합니다.

+0

위와 같이 연관을 만들 때, 그것은'POST' 또는'PUT' - 두 객체가 모두 존재하기 때문에 업데이트가 된 것 같지만 논쟁의 여지가 있을까요? 또한 Rail의 'match'는 무엇을합니까? 레이크 루트에서는 이후에 아무 것도 표시하지 않습니다. –

+0

의견에 대한 답변으로 내 게시물을 업데이트했습니다. – ksol