1

每当我尝试在 react_component 帮助器上将其他选项传递给 to_json 时,它都会被解析为 react 属性的纯字符串。

<%= 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 要么是一个响应#to_json 的对象,要么是一个已经字符串化的 JSON 对象(例如,用 Jbuilder 制作,参见下面的注释)。

这没有多大帮助。

Jbuilder 示例也没有帮助,因为我使用的是 to_json。

谢谢你的帮助。

4

1 回答 1

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\"}"

当它是一个字符串时,react-rails 只是将道具作为字符串。(第 3 行)

    html_options[:data].tap do |data|
      data[:react_class] = name
      data[:react_props] = (props.is_a?(String) ? props : props.to_json)
    end

不知道大集合的性能问题,但我基本上只是用几个字段序列化一个简单的对象,所以我一点也不担心。

于 2015-08-06T02:17:16.217 回答