【问题标题】:React On Rails gem with Rails API使用 Rails API 对 Rails gem 做出反应
【发布时间】:2017-07-28 04:39:51
【问题描述】:

我正在尝试在 Rails API 之上运行 React。我使用 --api 标志创建了 Rails 应用程序,因此我可以使其尽可能简约,我选择 react_on_rails gem 让 React 在此基础上工作,因为它似乎是解耦客户端和服务器应用程序的好方法.

我按照gem's Github page 上的教程进行操作,一切正常,但是当我在运行 Foreman 后尝试访问 URL http://localhost:5000/hello_world 时,我得到以下信息:

19:34:58 web.1    | Started GET "/hello_world" for 127.0.0.1 at 2017-03-07 19:34:58 +0000
19:34:58 web.1    | Processing by HelloWorldController#index as HTML
19:34:58 web.1    | Completed 204 No Content in 0ms (ActiveRecord: 0.0ms)

我很确定我收到此响应的原因是因为 Rails 没有通过所有资产管道并且没有呈现 index.html.erb 视图,因为 API 模式。

所以我的问题是,我可以通过 react_on_rails gem 让 Rails API 与 React 一起工作吗?还是我需要更改配置以使 Rails 应用程序停止在“API 模式”下工作?或者也许我可以调整 gem 的配置以使其正常工作,尽管我在文档中找不到任何内容。

我的hello_world_controller.rb 控制器,使用rails generate react_on_rails:install 自动生成如下所示:

class HelloWorldController < ApplicationController
  def index
    @hello_world_props = { name: "Stranger" }
  end
end

我们将非常感谢所有帮助和指导,因为我并不是任何这些工具的专家。谢谢!

【问题讨论】:

  • 您的控制器看起来如何? 204 no content 并不是真正的错误,它是一个成功状态代码,表示除了状态之外服务器响应没有任何内容。但我假设如果您使用 --api 生成 rails 应用程序,然后使用任何 rails 生成器生成控制器,它将不会响应 html 请求,因此不会呈现 index.html.erb
  • 这毫无意义。您不应该尝试将 --api 与提供非 API 内容的应用混用。
  • @meagar 是的,我有点确信这是问题所在,因为我猜在这种情况下,Rails 应用程序实际上并不仅仅是一个 API,因为客户端代码正在由 webpack 处理,并且然后由应用程序渲染
  • 我认为它不表现为 Api 的原因是 react_on_rails 生成了服务器端视图(我猜然后使用一些帮助器来呈现反应组件)。在 rails 实际上只是提供一个 api 并且所有客户端逻辑都发生在 react 中的方法中,您可能不需要像 react_on_rails 或 react-rails 这样的 gem
  • 最近有人写了一篇关于 Rails API 和 react 的非常好的教程,可能会帮助您使用 Rails 和 react。 medium.com/superhighfives/…

标签: ruby-on-rails reactjs rails-api react-on-rails


【解决方案1】:

React on Rails 最终通过 Rails 的视图层为 webpack 包提供服务。所以不,它不适用于 api-only 开箱即用。

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 2017-12-11
    • 2014-05-26
    • 2014-11-15
    • 2021-11-15
    • 2019-07-27
    • 1970-01-01
    • 2022-07-26
    • 2018-02-19
    相关资源
    最近更新 更多