Rails 4 + ReactJS:“语法错误:隐式对象中不能有隐式值”

Posted

技术标签:

【中文标题】Rails 4 + ReactJS:“语法错误:隐式对象中不能有隐式值”【英文标题】:Rails 4 + ReactJS: "SyntaxError: cannot have an implicit value in an implicit object" 【发布时间】:2015-11-25 21:08:28 【问题描述】:

我正在关注 Fernando Villalobos 的 React.js - A guide for Rails developers AirPair 教程。

这里的目标是使用 Rails 和 React JS 构建一个简单的费用跟踪应用程序。

Nesting Components: Listing Records部分,作者建议创建app/views/records/index.html.erb文件如下:

<%# app/views/records/index.html.erb %>
<%= react_component 'Records',  data: @records  %>

和一个javascripts/components/records.js.coffee 文件如下:

# app/assets/javascripts/components/records.js.coffee

  @Records = React.createClass
    render: ->
      React.DOM.div
        className: 'records'
        React.DOM.h2
          className: 'title'
          'Records'

然后,当我们访问localhost:3000/records 时,我们应该会看到以下内容:

但是,当我访问localhost:3000/records 时,我收到以下错误:

ExecJS::RuntimeError in Records#index
SyntaxError: [stdin]:7:10: cannot have an implicit value in an implicit object
<title>Expenses</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

特别是,导致问题的行似乎是:

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

知道问题是什么以及如何使事情发挥作用吗?

【问题讨论】:

【参考方案1】:

我的错。

我在 CoffeeScript 文件中使用了 Ruby“双空格”缩进,导致错误。

当我复制并粘贴教程中的代码并使用正确的缩进时,一切都像魅力一样工作。

【讨论】:

谢谢——同样的错误。重新开始关于留白意义重大的辩论!【参考方案2】:

尝试以下 coffescript 而不是您当前的 coffescript(只需从 coffescript 中删除 React.DOM):

@Records = React.createClass
  render: ->
    div
      className: 'records'
      h2
        className: 'title'
        'Records'

【讨论】:

问题来自缩进。我刚刚发布了一个答案来解释这一点。但是,像往常一样,非常感谢您的帮助和响应,非常感谢。 没问题,是的,那是来自 coffescript 编译问题。我在 react 版本 .12 中发现了一些没有使用 React.DOM 的建议,所以我认为这就是问题所在。因为,我在这里尝试了你的咖啡脚本代码:coffeelint.org,它没有抱怨。无论如何,我很高兴它现在为你工作:)

以上是关于Rails 4 + ReactJS:“语法错误:隐式对象中不能有隐式值”的主要内容,如果未能解决你的问题,请参考以下文章

Rails/ReactJs 视图未在浏览器刷新时更新

ReactJS:从 rails 传递参数以将路由器反应到组件

如何通过 websockets 在 ruby​​ on rails 和 reactJS 之间发送数据

如何在 Rails 中使用来自 npm 的反应组件

Heroku:Rails 5 WebSocket 连接失败

将 reactjs 和 .net 4.8 后端部署到 iis 时遇到问题