Sfoglia il codice sorgente

Setup simple react application as base app

Andrew Swistak 7 anni fa
parent
commit
45e0d41422

+ 4 - 0
app/controllers/pages_controller.rb

@@ -0,0 +1,4 @@
+class PagesController < ApplicationController
+  def root
+  end
+end

+ 0 - 0
app/javascript/packs/react-app/assets/stylesheets/app.scss


+ 13 - 0
app/javascript/packs/react-app/components/landing_page.jsx

@@ -0,0 +1,13 @@
+import React from 'react';
+
+class LandingPage extends React.Component {
+  render() {
+    return (
+      <div>
+        <h1>It lives!</h1>
+      </div>
+    );
+  }
+}
+
+export default LandingPage;

+ 7 - 0
app/javascript/packs/react-app/index.js

@@ -0,0 +1,7 @@
+import React from 'react';
+import ReactDOM from 'react-dom';
+import Routes from './routes';
+
+document.addEventListener('DOMContentLoaded', () => {
+  ReactDOM.render(<Routes />, document.getElementById('react-app'));
+});

+ 14 - 0
app/javascript/packs/react-app/routes.js

@@ -0,0 +1,14 @@
+import React from 'react';
+import {BrowserRouter as Router, Route} from 'react-router-dom';
+
+import LandingPage from './components/landing_page';
+
+const App = props => (
+  <Router>
+    <div>
+      <Route exact path="/" component={LandingPage} />
+    </div>
+  </Router>
+);
+
+export default App;

+ 5 - 2
app/views/layouts/application.html.erb

@@ -5,11 +5,14 @@
     <%= csrf_meta_tags %>
     <%= csp_meta_tag %>
 
-    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
-    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
+    <%= stylesheet_link_tag    'application', media: 'all' %>
+
+    <%= javascript_pack_tag 'react-app/index' %>
+    <%= stylesheet_pack_tag 'react-app/assets/stylesheets/app' %>
   </head>
 
   <body>
+
     <% flash.each do |key, value| %>
       <%= content_tag :div, value, class: "flash #{key}" %>
     <% end %>

+ 1 - 0
app/views/pages/root.html.erb

@@ -0,0 +1 @@
+<div id='react-app'></div>

+ 2 - 1
config/routes.rb

@@ -1,7 +1,8 @@
 Rails.application.routes.draw do
+  get 'pages/root'
   # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
 
-  root to: "pokemon#index"
+  root to: "pages#root"
 
   resources :pokemon
   post 'pokemon/upload', to: 'pokemon#upload'