gpt4 book ai didi

javascript - 您可以调用 Jbuilder 来创建原生 Rails 对象而不是呈现的字符串吗?

转载 作者:行者123 更新时间:2023-11-30 11:52:18 25 4
gpt4 key购买 nike

我的 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

关于javascript - 您可以调用 Jbuilder 来创建原生 Rails 对象而不是呈现的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39103685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com