Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我如何从Rails获取AJAX数据并将其渲染回Rails?_Ruby On Rails_Ajax_Reactjs - Fatal编程技术网

Ruby on rails 我如何从Rails获取AJAX数据并将其渲染回Rails?

Ruby on rails 我如何从Rails获取AJAX数据并将其渲染回Rails?,ruby-on-rails,ajax,reactjs,Ruby On Rails,Ajax,Reactjs,在过去的几个月里,我一直在做的项目已经有了很多形式,但它最近的一个版本是一个RESTfulRails后端,前端有React、Jade和Express。这很好,因为React和Jade在前端处理任何数据渲染,它允许我们将请求从一个单一请求分解为大约三个小得多的请求 现在的任务是将视图组件合并到Rails中,而这正是我遇到的问题 正如我之前所说的,世界是不同的——RESTfulRails路线在围栏的一边,客户端在另一边,这意味着AJAX请求是唯一的游戏。以下是一些示例路线: v1/property

在过去的几个月里,我一直在做的项目已经有了很多形式,但它最近的一个版本是一个RESTfulRails后端,前端有React、Jade和Express。这很好,因为React和Jade在前端处理任何数据渲染,它允许我们将请求从一个单一请求分解为大约三个小得多的请求

现在的任务是将视图组件合并到Rails中,而这正是我遇到的问题

正如我之前所说的,世界是不同的——RESTfulRails路线在围栏的一边,客户端在另一边,这意味着AJAX请求是唯一的游戏。以下是一些示例路线:

  • v1/property/:字段
  • v1/属性2/:字段
  • v1/属性3/:字段
所有这些路由都独立于任何UI工作,因此对于这个问题,我们应该将它们视为数据源

这些都是在一个类似仪表板的页面上请求的,每个请求都与该页面的特定部分有关,所有请求都有一个搜索栏支持,允许用户插入特定的日历日期。我现在在一个视图中直观地看到了这一点(注意多边形)

我主要关心的是对视图其他三个部分的请求。我不清楚如何让每个部分独立地使用搜索栏提供的适当值向适当的RESTful路径发出请求

我尝试了一种黑客方法来解决这个特殊问题:

  • 在搜索模块的JS文件中,在提交时,创建一个名为
    doingSearch
    的新事件
  • 使用此事件提供我从搜索模块的
    标记收到的信息,如果没有其他内容,则返回其占位符值
  • \u property.js.erb
    中,我监听此事件并发出两个AJAX请求:

    • 第一个请求是到端点,
      v1/property/:field
      ,如果成功,第二个请求是一个POST,它将发送到一个route/board/:field/handle\u POST。这里的信念是,我对这条路线有更多的控制权,并且可以支配这里呈现的内容
  • 然后在
    \u property.js.erb
    的末尾呈现
    \u property.html.erb
    ,但为了简单起见,我更希望将JSON数据传递到
    \u property.html.erb
    中,就好像它是一个Rails模型一样。如果可能的话,合乎逻辑的解决方案是在提交POST请求后提交视图,但这是另一个症结所在——我不清楚如何处理这个问题


我将如何实现这一点?

如果您正在处理数据,您将希望使用通量模式。下面是React.14/ReFluxSuperAgent中的一个示例。store处理启动ajax请求的操作。util/api.js处理ajax请求。basic.store通过来自util/api.js的操作接收数据,并通过事件将数据传递给控制组件。然后,控制组件可以将相关数据作为道具传递给其他组件。这些组件可以触发api.store侦听的事件

从“回流”导入回流;
从“/Actions”导入操作;
从“/../utils/api.js”导入ApiFct;
让ApiStoreObject={
新数据:{
“反应版本”:“0.14”,
“项目”:“ReFluxSuperAgent”,
“currentDateTime”:新日期().toLocaleString()
},
可收听者:行动,
apinit(){ApiFct.setData(this.newData);},
apinitdone(){ApiFct.getData();},
apiSetData(数据){ApiFct.setData(数据);}
}
const ApiStore=reflow.createStore(ApiStoreObject);

导出默认存储这看起来很激烈,但不能保证我会使用React来实现这一点。我的目标是看看是否有一个以Rails为中心的解决方案。