首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用React设计Ruby on Rails应用程序的合适方法是什么

使用React设计Ruby on Rails应用程序的合适方法是什么
EN

Stack Overflow用户
提问于 2019-04-29 20:53:05
回答 1查看 154关注 0票数 0

我正在做一些使用Ruby on Rails和React的项目。我使用的是react-rails gem。我有一些关于如何正确设计Rails和React应用程序架构的问题。我的问题主要是关于在Rails和React之间传递数据。

我知道主要有两种方法。首先,也是最常见的方式是在Rails中使用单独的API,在React中使用前端应用。这带来了一些利弊。我将不得不开发和维护两个独立的应用程序,但在未来,我可以很容易地将现有的API重用到其他东西上,比如移动应用程序。通过这种方式,我的前端React向Rails API请求数据。

我选择的第二种方式是使用Rails内置的webpackerreact-railsreact-on-rails开发整体式应用程序。通过这种方式,我可以简单地从Rails控制器中获取数据

代码语言:javascript
复制
@foo = Model.find(id)

并将其传递给视图中的React组件

代码语言:javascript
复制
=react_component("Foo", {foo: @foo})

但当我得到一些更复杂的模型和更多的依赖项时,问题就开始了。例如,假设我有一个模型:

代码语言:javascript
复制
class Foo < ApplicationRecord
  belongs_to: :user
  has_many: :bar #which is some nested resources

现在我想创建一个模型Foo的索引页,它将显示所有的Foo'suser数据,并连接到它的Bar's。在纯Rails应用程序中,我可以简单地在@foo的控制器中请求,稍后在视图中只需使用@foo.user.nick。但是当我使用react时,我需要将所有这些信息提取到我的控制器中,然后使用props传递给React组件,这在我看来会造成很多混乱。

我的问题是:在Rails和React之间传递数据的合适方式是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-05-12 22:58:32

最干净的选择就是像你说的那样,获取控制器并使用props传入。

如果你把它当做道具来做,最好的方法是利用Rails的as_json方法和它的可链接选项:

  • only
  • except
  • methods
  • include

下面是一个例子:

代码语言:javascript
复制
@my_component_data = @foo.as_json(include: { user: { only: [:id, :name, :nick] } }

最终,你可能会选择像ActiveModelSerializers这样的东西,但我个人更喜欢避免速度损失和增加的复杂性,其他人则信以为真。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55903838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档