Ruby on rails 使用';材料界面';用宝石?

Ruby on rails 使用';材料界面';用宝石?,ruby-on-rails,reactjs,asset-pipeline,react-jsx,react-rails,Ruby On Rails,Reactjs,Asset Pipeline,React Jsx,React Rails,我想在Rails 4应用程序中使用material ui组件库。我目前正在使用react rails gem将.jsx编译添加到资产管道中。我通过gemfile中的rails资产添加了材质ui,如下所示: source 'https://rails-assets.org' do gem 'rails-assets-material-ui' end //= require material-ui 我需要application.js文件中的库,如下所示: source 'https://ra

我想在Rails 4应用程序中使用material ui组件库。我目前正在使用react rails gem将.jsx编译添加到资产管道中。我通过gemfile中的rails资产添加了材质ui,如下所示:

source 'https://rails-assets.org' do
  gem 'rails-assets-material-ui'
end
//= require material-ui
我需要application.js文件中的库,如下所示:

source 'https://rails-assets.org' do
  gem 'rails-assets-material-ui'
end
//= require material-ui

然而,我不断得到错误“找不到文件的材料界面”。如何将Rails应用程序中的material ui组件库与react Rails gem一起使用?

好的,下面是我迄今为止所做的工作

在我添加的文件中:

gem 'react-rails'
gem "browserify-rails"
这为我们提供了react库、帮助程序和jsx编译,以及使用require()sytax在JS中请求模块的能力。browserify rails还允许我们通过package.json文件在rails资产中要求npm模块

我们可以通过这个package.json文件将材质ui库添加到我们的应用程序中

"dependencies" : {
    "browserify": "~> 10.2.4",
    "browserify-incremental": "^3.0.1",
    "material-ui": "0.13.1"
  },
material ui库使用require语法以正确的顺序将所有不同的jsx组件文件连接在一起,因此我们需要使用browserify rails

接下来,为了使我们的react代码保持一致,我在asset/javascripts中创建了一个名为/react的新目录

react
    L /components
    L react.js
    L react-libraries.js
    L theme.js
现在,作为“material ui”依赖项的一部分,我们有了react库。这意味着目前我们有两份图书馆的副本。一个来自“react rails”gem,另一个来自“browserify rails”的“material ui”库依赖项。让我们使用“material ui”依赖项中的一个,并保留“react rails”中的一个

在react.js中:

//= require ./react-libraries
//= require react_ujs
//= require_tree ./components
然后在react-libraries.js中

//React Library
React = require('react');
//Material Design Library
MaterialUi = require('material-ui/lib');
injectTapEventPlugin = require('react-tap-event-plugin'); injectTapEventPlugin();
//Material Design Library Custom Theme
MyRawTheme = require('./theme');
ThemeManager = require('material-ui/lib/styles/theme-manager');
然后我们想把所有这些都包括在资产管道中

//= require react/react
在application.js中

现在,您可以在/react/components中的jsx文件中编写组件/ 您可能还希望使用以下名称命名组件的名称空间

//Custom Components Namespace
Components = {};
在react-libraries.js中

//React Library
React = require('react');
//Material Design Library
MaterialUi = require('material-ui/lib');
injectTapEventPlugin = require('react-tap-event-plugin'); injectTapEventPlugin();
//Material Design Library Custom Theme
MyRawTheme = require('./theme');
ThemeManager = require('material-ui/lib/styles/theme-manager');
你可以像这样在theme.js中自定义你的主题

Colors = require('material-ui/lib/styles/colors');
ColorManipulator = require('material-ui/lib/utils/color-manipulator');
Spacing = require('material-ui/lib/styles/spacing');

module.exports = {
  spacing: Spacing,
  fontFamily: 'Roboto, sans-serif',
  palette: {
    primary1Color: Colors.grey300,
    primary2Color: Colors.grey300,
    primary3Color: Colors.lightBlack,
    accent1Color: '#01A9F4',
    accent2Color: Colors.grey100,
    accent3Color: Colors.grey500,
    textColor: Colors.darkBlack,
    alternateTextColor: Colors.white,
    canvasColor: Colors.white,
    borderColor: Colors.grey300,
    disabledColor: ColorManipulator.fade(Colors.darkBlack, 0.3)
  }
};

希望有帮助:)

我还必须添加ReactDOM=require('react-dom');在React_libraries.js中的React之后。否则,我得到了React.render,使用ReactDOM代替警告。嗨。。。你能举一个简单的例子,说明如何呈现一个材质ui组件…包括jsx和html文件。这个解决方案对我来说根本不起作用。我在使用react rails和browserify rails时遇到了各种各样的错误