每当我尝试在react_component帮助器上将其他选项传递给to_json时,它就会被解析为反应道具的纯字符串。
<%= react_component "SelectableActivityLevel",
phase: UserService.active_phase(@user).to_json(methods: "pictures_url"),
activity_levels: @activity_levels
%>
结果
this.prop.activity_levels //Object (correct)
this.prop.phase //String (incorrect)
宝石的文档说:
props可以是响应#to_json的对象,也可以是 已经字符串化的JSON对象(例如,使用Jbuilder制作,请参阅注释 下文)。
这没什么帮助。
Jbuilder示例也没有帮助,因为我正在使用to_json。
谢谢你的帮助。
答案 0 :(得分:0)
我使用 as_json 代替
解决了这个问题<%= react_component "SelectableActivityLevel",
phase: UserService.active_phase(@user).as_json(methods: :pictures_url),
activity_levels: @activity_levels
%>
to_json 正在返回字符串转义。 例如:
=> "{\"name\":\"bla bla\"}"
反应轨道只是在它是一个字符串时将prop作为字符串。 (第3行)
html_options[:data].tap do |data|
data[:react_class] = name
data[:react_props] = (props.is_a?(String) ? props : props.to_json)
end
不知道大型系列的性能问题,但我基本上只是将一个简单的对象序列化为一些字段,所以我根本不用担心它。