如何在rails

时间:2016-09-16 10:08:24

标签: ruby-on-rails reactjs npm summernote

我是新人,我遵循这篇文章https://www.airpair.com/reactjs/posts/reactjs-a-guide-for-rails-developers  在rails app中使用反应,一切都很好。但后来我想在records.html页面summernote(WYSIWYG html编辑器)中加入。我发现这个npm模块react-summernote并且无法使编辑器工作。

这是我的代码(尝试1):

  • 的application.js
var ReactSummernote= window.ReactSummernote = global.ReactSummernote = require('react-summernote');
  • index.html.erb
<%= react_component 'ReactSummernote'%>

这是我的代码(尝试2):

  • summernote.js.coffee
@RichTextEditor = React.createClass
  render: ->
    React.createElement ReactSummernote
  • index.html.erb
<%= react_component 'RichTextEditor'%>

并收到此错误

  

react.self-e3251ec ... .js?body = 1:1285警告:React.createElement:type不应为null,undefined,boolean或number。它应该是一个字符串(对于DOM元素)或一个ReactClass(对于复合组件)。检查Constructor的呈现方法。

1 个答案:

答案 0 :(得分:2)

有些值得检查的事情;

我假设您的节点包正在安装到/node_modules/*。确保将这些包添加到资产管道中。我用browserify来完成这个。

检查浏览器控制台以查看是否正在设置变量(只需键入ReactSummernote。如果导入正确,结果应该是函数,如果有问题,结果应该是未定义的。)

如果你已经走到这一步并且仍然卡住,我建议不使用react-rails就触发渲染。通过vanilla javascript渲染页面的组件是很容易的,如果它是导致你出现问题的react-rails gem,那么可以通过这样的方式轻松地导航它;

ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('example')
);