Merb 1.1/1.8.7에서 HTML 단편을 포함하는 JSON 응답 (예 : 업데이트를 지정하는 JSON 컨테이너, 사용자 레코드) 및 업데이트 된 JSON 응답을 사용하는 Rails 3 (베타)/1.9.1로 이식하고 있습니다. 사용자 행 모양입니다. Merb에서는 컨트롤러 메소드가 반환하는 것이 무엇이든간에 클라이언트에 해시를 넣고 렌더링 된 부분을 키 중 하나에 할당하고 hash.to_json을 반환 할 수 있습니다 (물론 이것이 최선의 방법은 아닐 수도 있습니다). 레일즈 , 클라이언트에 데이터를 다시 얻으려면 렌더링을 사용해야하고 렌더링은 한 번만 호출 할 수 있으므로 해시를 json으로 렌더링하는 것이 부분 렌더링 때문에 작동하지 않습니다.Rails 3에서 JSON 응답 내에서 HTML을 어떻게 렌더링합니까?
주위를 읽으면서, 해당 데이터를 JSON .erb보기 파일에 넣을 수 있습니다. < % = 부분 % %>을 렌더링하고 렌더링합니다. 이 문제를 해결하는 Rails 방식 (하나 이상의 HTML 조각이 포함 된 JSON 반환)이 있습니까? Merb는
에서:
컨트롤러 : 레일
only_provides :json
...
self.status = 204 # or appropriate if not async
return {
'action' => 'update',
'type' => 'user',
'id' => @user.id,
'html' => partial('user_row', format: :html, user: @user)
}.to_json
:
컨트롤러 :
respond_to do |format|
format.json do
render template: '/json/message-1',
locals: {
action: 'update',
type: 'user',
id: @user.id,
partial: 'user_row.html.erb',
locals: { user: @user }
}
end
end
전망 : JSON/메시지 1.json.erb
{
"action": <%= raw action.to_json %>,
"type": <%= raw type.to_json %>,
"id": <%= raw id.to_json %>,
"html": <%= raw render(partial: partial, locals: locals).to_json %>
}
비슷한 질문에 대한 대답 http://stackoverflow.com/a/15574453/667598 –