이것이 가장 좋은 방법인지 아닌지는 잘 모르겠지만 일반적으로 내가하고 싶은 것은 respond_to (즉, .:format
을 끝에 붙임으로써) 경로를 열어두고 컨트롤러에서 사용하는 것입니다. 필요할 때.
예 :
routes.rb
map.connect :controller/:action/:id.:format
model_controller.rb
# Return a collection of model objects
def action_with_multiple_responses
@models = Model.all
respond_to do |format|
format.html #=> action_with_multiple_responses.html
format.xml { render :xml => @models }
end
end
# Return the first model object
def action_with_one_response
@model = Model.first
end
그런 식으로, 당신은 불필요한 블록으로 action_with_one_response
방법을 어지럽히고되지 않습니다 , 그러나 당신이 원한다면 당신은 또한 아주 멋지게 스스로를 설정했습니다. 언젠가 xml, json 등에서 객체를 반환하십시오.
게이트 키퍼 아이디어, 좋은 생각을 생각하지 못했습니다. –
그 경우, 그 위의 예에서 (예 : .js가없는 html의 경우) 정확한 헤더가없는 json이라는 레코드가 406 일 것입니다. 그렇다면 거대한 것입니다 ... – tfwright
예, 위의'responds_to' 블록으로 .xml, .html 등의 요청은'406 Not Acceptable'을 반환해야합니다. – Ben