Tôi đang chuyển một ứng dụng từ Merb 1.1/1.8.7 sang Rails 3 (beta)/1.9.1 sử dụng các phản hồi JSON chứa các đoạn HTML, ví dụ: một vùng chứa JSON chỉ định cập nhật, trên hồ sơ người dùng và cập nhật hàng người dùng trông giống như. Trong Merb, vì bất kỳ một phương thức điều khiển nào được trả về cho client, người ta có thể đặt cùng một Hash, gán một phần được trả về cho một trong các khóa và trả về hash.to_json (mặc dù chắc chắn đó không phải là cách tốt nhất.) , có vẻ như để lấy lại dữ liệu cho khách hàng, người dùng phải sử dụng kết xuất và kết xuất chỉ có thể được gọi một lần, do đó, việc hiển thị hàm băm thành json sẽ không hoạt động do hiển thị một phần.Trong Rails 3, làm cách nào để hiển thị HTML trong phản hồi JSON?
Từ đọc xung quanh, có vẻ như người ta có thể đưa dữ liệu đó vào tệp xem .erb JSON, với <% = hiển thị một phần%> vào và hiển thị. Có cách nào để giải quyết vấn đề này (trả về JSON có chứa một hoặc nhiều đoạn HTML) không?
Trong Merb:
điều khiển:
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
Trong Rails:
điều khiển:
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
xem: json/tin nhắn-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 %>
}
Câu trả lời của tôi cho một câu hỏi tương tự http://stackoverflow.com/a/15574453/667598 –