【发布时间】: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