由rails生成的json无法通过反应识别

时间:2015-01-17 15:09:30

标签: ruby-on-rails json ruby-on-rails-4 reactjs

我有一个像这样的反应组件

var Task = React.createClass({
  render: function () {
    return (
      <div className="task" id={ this.props.task.uid }>
        <div className="header">
          <span>task #{ this.props.task.uid }</span>
        </div>
      </div>
      )
  }
});

当创建任务时,我将此任务添加到create.js.erb

内的任务列表中
<% if @task.errors.any? %>
  $("#error-alert").removeClass('hidden')
<% else %>
  $('#task-modal').modal('hide')
  $('#tasks-list').prepend(React.renderToString(Task({ task: '<%= @task.to_react %>' })))
<% end %>

事实证明,当任务组件被预先添加时,他被添加为空(只有一个框,没有任何文本)。
我试过<%= @task.to_react.to_json.html_safe %>但也没有成功

我的Task#to_react方法:

def to_react
   {
     role: role,
     need: need,
     result: result,
     uid: uid
   }

1 个答案:

答案 0 :(得分:1)

不熟悉rails,但除非它在这里做了一些魔术,否则你将对象嵌入到字符串中。

尝试

任务:&lt;%= ...%&gt;

而不是:

任务:&#39;&lt;%= ...%&gt;&#39;