sam*_*ker 3 javascript json ruby-on-rails jbuilder actioncable
我的 Rails 应用程序通过 Action Cable 广播一组记录,
ActionCable.server.broadcast 'model_channel', models: (ApplicationController.render 'models/index.json', assigns: { models: Model.all })
我打电话ApplicationController.render以确保jbuilder被调用(我在models/index.json.jbuilder文件中添加自定义字段)。
一切正常,除了broadcast参数被转换为字符串,因此我需要调用JSON.parse(data['models'])以便在 JavaScript 处理程序中使用数据。
我可以在 Ruby 端做些什么来避免对我的有效负载进行字符串化然后在客户端解析它?
您可以通过将外部构建器实例传递给渲染器来直接使用 Jbuilder(即无需解析步骤),如以下代码所示:
class ReservationChannel < ApplicationCable::Channel
def subscribed
reservation = Reservation.find(params[:reservation_id])
stream_for reservation
end
def self.reservation_update(reservation)
broadcast_to reservation, reservation_data_for_json(reservation)
end
private
def self.reservation_data_for_json(reservation)
Jbuilder.new do |json|
ApplicationController.render(
template: 'reservation/index.jbuilder',
locals: { reservation: reservation, json: json }
)
end.attributes!
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1711 次 |
| 最近记录: |