问题标签 [react-rails]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
228 浏览

heroku - Heroku Production - ActionView::Template::Error(未定义的方法 `directory' for #)

我们有一个 react-rails 应用程序。不幸的是,该应用程序适用于本地开发,但在部署到 heroku 时不能。在应用程序上转到我们的默认路径时,我们收到以下错误: ActionView::Template::Error (undefined method 'directory' for #<Sprockets::Manifest:0x007fef13200aa8>)

在我们看来,我们已经发现它发生在这一行: <%= react_component('NavBar', {}, {prerender: true}) %>

关于我们的应用程序的一些事情:

  • 它使用 browserify 来编译我们的 js.jsx。
  • 我们RAILS_ENV=production bundle exec rake assets:precompile在删除 public/assets 文件夹后使用预编译。
  • 在本地与两者一起rails s工作foreman start
  • 我们正在使用 boostrap 链轮。即使删除,我们仍然有这个问题。

这是我们的 npm 依赖项:

这是我们的 Gemfile

我们将不胜感激。

0 投票
2 回答
974 浏览

ruby-on-rails - 如何在 react-rails 组件中从 rails-assets.org 调用 react-modal

我有一个在前端使用 react 的 rails 应用程序,但在向我的组件中添加其他 react 模块时遇到问题。我正在使用react-rails将 react 合并到我的 rails 应用程序中。我想将react-modal添加到组件中。我使用 rails-assets 将 react-modal 添加为 gem,但在组件中调用 react-modal 时遇到问题。我希望这将是一个与 React.DOM 类似的调用,但似乎并非如此。

由于链轮,我不能使用正常的 'require()' 语法,我想坚持使用 rails-assets 而不是 browserify/webpack 解决方案。

因此,为了清楚起见,我想在我的组件中显示模态,截至目前,我收到一个错误,提示“未定义模态”。谢谢你的帮助。

这是来自 rails-assets 的 gem:

应用程序.js

这是我的组件:

0 投票
2 回答
2483 浏览

ruby-on-rails - 使用 rails + react-rails gem + react 路由器进行服务器渲染

我创建了这个示例 repo,它使用 rails (v4.2.6) 和 react-rails (v1.6.2) 和 react-router (v2.0.0-rc5):https ://github.com/pioz/rails_with_react_and_react_router_example

在文件中app/views/application/react_entry_point.html.erb,我MountUp使用

该组件MountUp呈现我的路由器:

一切正常,但如果我更改选项,prerender: true我会收到一个奇怪的错误React::ServerRendering::PrerenderError in Application#react_entry_point

如何渲染此应用服务器端?这是正确的方法吗?

0 投票
1 回答
16112 浏览

ruby-on-rails-4 - 警告:输入是一个空元素标签,不能有 `children` 或使用 `props.dangerouslySetInnerHTML`。检查 null 的渲染方法

如果对表单 URL 的 ajax 调用失败,我将尝试在表单中呈现错误。下面是我的Admin组件:

对应的AdminError组件是:

在调试时,我得到了 @props.errorText 的正确值,因为“电子邮件无效”。但它没有在页面上呈现,我在控制台中收到此警告:“警告:输入是一个 void 元素标记,不得具有children或使用props.dangerouslySetInnerHTML。检查 null 的渲染方法。” 附件是错误和页面的屏幕截图。 在此处输入图像描述在此处输入图像描述

我尝试如下更改 AdminError 组件,但没有成功:

当我在返回危险SetInnerHTML 的行处设置调试点时,我正确地获得了@props.errorText“电子邮件无效”的值和marked(@props.errorText.toString())

电子邮件无效

“..但仍然根本没有呈现错误的帮助块。

更新: 在 AdminError 组件中进行了以下更改

应用程序/资产/javascripts/components/adminerror.js.coffee

在 Admin 组件中,对 adminform 方法进行了以下更改:

不再收到警告,而是收到以下错误:

0 投票
2 回答
2017 浏览

javascript - ReactCompositeComponent.render():必须返回一个有效的 ReactComponent。您可能返回了未定义、数组或其他一些无效对象

我在控制台中收到上述错误,即使我正确地返回了要渲染的组件。errorTexts = ["email is invalid"]以下代码中的值

AdminError 组件包含以下代码:

这个组件的 JS 等价物是:

从 AdminError 组件返回的结果值显示在下面的屏幕截图中,但是,我不确定返回的对象类型是否可以接受,因为它在 for 循环中: 在此处输入图像描述

更新: 修改了 AdminError 组件中的代码以修复此错误

并再次收到此错误:

0 投票
1 回答
101 浏览

javascript - React on Rails:Jsx 和 Coffeescritpt 显示 @props

我对 React 很陌生。

如何@props使用Jsxand显示CoffeeScript

在我的文件records.js.jsx.coffee中,我有以下代码来显示记录的日期和标题:

我收到的错误是SyntaxError: unknown: Unexpected token (5:11)

我希望我可以使用反引号来转义代码`

0 投票
1 回答
2431 浏览

javascript - 使用 JS 手动挂载/渲染 React 组件

我正在尝试将 react-rails 与 kaminari gem 一起使用。下面的代码负责创建带有分页的管理员页面,分页是一种 kaminari 方法:

在使用 remote=true 触发请求时,重新绘制整个内容,通过以下代码生成响应:

在 ajax 请求之后,响应正确生成,并且 ReactComponent 也在页面的 HTML 中创建,如下所示:

但问题是组件没有被渲染/安装。我尝试通过控制台手动安装组件,但我不确定我是否正确执行此操作。

此外,在触发下一页请求后,chrome 中的 react 扩展会显示 Admin 组件的先前状态: 在此处输入图像描述

目的是在点击分页链接时替换下面红框的html:在此处输入图像描述

当我在单击分页链接之前/之后在控制台中运行 Admin.prototype 时,我得到以下输出: 在此处输入图像描述

0 投票
2 回答
534 浏览

ruby-on-rails - React-Rails API 轮询

我是 React 新手,我已经阅读了有关如何将 React 用作​​独立服务的官方 React 教程,并且刚刚阅读了有关在 Rails 应用程序中使用 react-rails gem 的本教程,大部分我已经占用正是我需要的。我遇到的问题是我需要为我的小 React 页面实现某种简单的 API 轮询,但我似乎无法在任何地方找到关于如何在 react-rails 中最好地实现这一点的文档。

在 react 教程中,它告诉我们pollinterval = 2000在声明数据源时使用每 2000 毫秒轮询一次源。我尝试按如下方式实现,但无济于事:

不幸的是,当我加载页面时,不仅没有实际显示任何内容,而且似乎根本没有查询数据库——即使是最初。这让我相信这不是 AJAX 调用/设置轮询间隔的正确位置,但在我的谷歌搜索中没有什么特别有用的。

0 投票
1 回答
107 浏览

javascript - 为 html 中的禁用元素启用 onMouseOut

在 react-rails 中,onMouseOut 事件仅在元素未禁用时才起作用。

以下是 render 方法中的代码:

调用的相应方法如下所示:

0 投票
1 回答
431 浏览

javascript - Coffeescript:添加由布尔值控制的条件类名

我正在尝试使用以下方法将类名添加到反应中的元素:

然而,这导致class="btn btn-primary true"

这段coffee代码编译成不正确的JS如下:

在咖啡中这样做的正确语法是什么?