react-rails gem 不适用于 to_json
react-rails gem not working with to_json
每当我尝试在 react_component 帮助程序上将其他选项传递给 to_json 时,它就会像普通字符串一样被解析为 react prop。
<%= 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)
gem 的文档说:
props is either an object that responds to #to_json or an
already-stringified JSON object (eg, made with Jbuilder, see note
below).
这并没有多大帮助。
Jbuilder 示例也没有帮助,因为我正在使用 to_json。
谢谢你的帮助。
我使用 as_json 解决了问题
<%= react_component "SelectableActivityLevel",
phase: UserService.active_phase(@user).as_json(methods: :pictures_url),
activity_levels: @activity_levels
%>
为什么?
to_json 返回转义的字符串。
例如:
=> "{\"name\":\"bla bla\"}"
并且 react-rails 只是在 prop 是字符串时将其作为字符串。 (第 3 行)
html_options[:data].tap do |data|
data[:react_class] = name
data[:react_props] = (props.is_a?(String) ? props : props.to_json)
end
不知道大集合的性能问题,但我基本上只是用几个字段序列化一个简单的对象,所以我根本不担心它。
每当我尝试在 react_component 帮助程序上将其他选项传递给 to_json 时,它就会像普通字符串一样被解析为 react prop。
<%= 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)
gem 的文档说:
props is either an object that responds to #to_json or an already-stringified JSON object (eg, made with Jbuilder, see note below).
这并没有多大帮助。
Jbuilder 示例也没有帮助,因为我正在使用 to_json。
谢谢你的帮助。
我使用 as_json 解决了问题
<%= react_component "SelectableActivityLevel",
phase: UserService.active_phase(@user).as_json(methods: :pictures_url),
activity_levels: @activity_levels
%>
为什么?
to_json 返回转义的字符串。 例如:
=> "{\"name\":\"bla bla\"}"
并且 react-rails 只是在 prop 是字符串时将其作为字符串。 (第 3 行)
html_options[:data].tap do |data|
data[:react_class] = name
data[:react_props] = (props.is_a?(String) ? props : props.to_json)
end
不知道大集合的性能问题,但我基本上只是用几个字段序列化一个简单的对象,所以我根本不担心它。