如何在前端使用React.js时处理Rails中的数据绑定?

时间:2015-02-02 21:44:12

标签: ruby-on-rails reactjs

我感兴趣的是构建一个同构应用程序,它将React.js用于前端,而Rails用于其他所有应用程序。

我确定我会使用相当数量的AJAX,但是对于主要表单提交和页面更改,我想通过Rails路由器。我不想使用Javascript来控制我在客户端上显示的观看次数。

我唯一的问题是,在React中设置输入的最佳方法是什么,以便它们与我在Rails中的模型完全绑定?

在常规erb中,您将为给定模型创建一个表单对象,然后使用该对象上的输入方法创建已经设置的HTML输入,以便在提交时,数据绑定非常自动。

我能想到用React之类的东西来做这件事的唯一方法是在我的输入上手动设置name属性,以便它们被正确绑定。我想这并不可怕,我只是想知道是否有人有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

创建客户端(React模型)以“反映”rails响应。 例如在铁轨方面:

class Message < ActiveRecord::Base
  belongs_to :thread

  validate :text, presence: true
end

服务器索引/新端点发送的JSON响应应定义客户端的数据模型结构。例如,索引端点可以返回:

{
  "messages": [
    {
      "id": "1",
      "text": "Hello Stack",
      "threadId": "5"
    } 
  ]
}

客户端模型:

var Message = function Model(){
  this.id = null;
  this.text = null;
  this.threadId = null;
};

Message.fromJSON = function(messageJSON) {
  var message = new Message();
  message.id = messageJSON.id;
  // ...
  return message;
};

module.exports = Message;

然后在创建/编辑时,只需调用JSON.stringfy(msg)。